我在更新状态时出现错误

时间:2018-07-20 07:46:35

标签: node.js reactjs api axios

在尝试从函数中更新状态并从curl生命周期方法调用该函数时,该状态不会更新。 但是,当我尝试通过从jsx内部调用函数来更新状态时,它确实起作用。我不知道发生了什么

componentdidmount

但是当我从jsx内部调用函数//my state constructor(){ super() this.state = { activepage:'dashboard', language:[], } } //the function I am updating state from getLanguage = () => { axios.get('http://localhost:3001/language') .then(function (response) { console.log(response.data.language); this.setState({ language:response.data.language }) }) .catch(function (error) { return error; }); } //I am calling function from componentDidMount(){ this.getLanguage(); console.log("state after updating",this.state) //displays an empty array } 时,它会更新状态。

2 个答案:

答案 0 :(得分:0)

使用es6箭头功能更新功能

.then((response) => {
        console.log(response.data.language);
        this.setState({
            language:response.data.language
        })
    })

答案 1 :(得分:0)

对于a - B - c - d - e -> master \ f - g -> some-feature \ h' - i' - j' -> branch-to-move ,您可以使用es6

arrow function

对于getLanguage = () => { axios.get('http://localhost:3001/language') .then((response) => { console.log(response.data.language); this.setState({ language:response.data.language }) }) .catch((error) => { return error; }) ); } ,您可以声明es5超出范围this函数

axios