我如何更改 "this" 对象
How do i change "this" object
我知道 this
对象不能更改的规则,但需要一个替代方法。
var that= this
axios.get('http://ec2-54-165-240-14.compute-1.amazonaws.com:3000/api/foodItem').then(function(data){
console.log("inside axios ",data)
that.setState({
items : data,
});
var curGroupId = that.props.cartReducer.val;
var items = that.state.items ;
var curItems= [];
for(var i in items){
if(items[i].food_group_id==curGroupId){
curItems.push(items[i]);
}
}
that.setState({
curItems : curItems
})
}).catch(function(err){
console.log(err)
})
我想更新 this
对象中的状态,该对象在 then
函数内部不可访问,因此我在函数之前将 this
对象存储在 that
中但我想在 this
对象中应用更改。
您可以尝试使用箭头函数,这样您就可以在内部函数中访问 this
。
axios.get('http://ec2-54-165-240-14.compute-1.amazonaws.com:3000/api/foodItem')
.then((data) => {
console.log("inside axios ",data)
this.setState({ // <---- references to the parent scope
items : data,
});
var curGroupId = that.props.cartReducer.val;
var items = that.state.items ;
var curItems= [];
for(var i in items){
if(items[i].food_group_id==curGroupId){
curItems.push(items[i]);
}
}
this.setState({ // this too ;)
curItems : curItems
})
}).catch((err) => {
console.log(err)
})
箭头函数将使用与父函数相同的作用域,在这些情况下非常方便。
还有一点,我不建议多次调用 setState
。当所有数据都准备好使用时,您应该只在回调结束时调用它一次。
我知道 this
对象不能更改的规则,但需要一个替代方法。
var that= this
axios.get('http://ec2-54-165-240-14.compute-1.amazonaws.com:3000/api/foodItem').then(function(data){
console.log("inside axios ",data)
that.setState({
items : data,
});
var curGroupId = that.props.cartReducer.val;
var items = that.state.items ;
var curItems= [];
for(var i in items){
if(items[i].food_group_id==curGroupId){
curItems.push(items[i]);
}
}
that.setState({
curItems : curItems
})
}).catch(function(err){
console.log(err)
})
我想更新 this
对象中的状态,该对象在 then
函数内部不可访问,因此我在函数之前将 this
对象存储在 that
中但我想在 this
对象中应用更改。
您可以尝试使用箭头函数,这样您就可以在内部函数中访问 this
。
axios.get('http://ec2-54-165-240-14.compute-1.amazonaws.com:3000/api/foodItem')
.then((data) => {
console.log("inside axios ",data)
this.setState({ // <---- references to the parent scope
items : data,
});
var curGroupId = that.props.cartReducer.val;
var items = that.state.items ;
var curItems= [];
for(var i in items){
if(items[i].food_group_id==curGroupId){
curItems.push(items[i]);
}
}
this.setState({ // this too ;)
curItems : curItems
})
}).catch((err) => {
console.log(err)
})
箭头函数将使用与父函数相同的作用域,在这些情况下非常方便。
还有一点,我不建议多次调用 setState
。当所有数据都准备好使用时,您应该只在回调结束时调用它一次。