在尝试从函数中更新状态并从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
}
时,它会更新状态。
答案 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