我正在尝试从外部文件中提取数据,并通过props将项目填充到组件中。为此,我等待使用componentDidMount()生命周期方法完全挂载组件,然后使用map函数处理json数据,并最终设置状态。
class ItemComponent extends Component {
constructor(props) {
super(props);
this.state = {
data: data,
sections: null
}
}
getItemSections = () => {
let s = [];
// Properly logs external data
console.log(this.state.data);
s.push(this.state.data.map((section) => {
return {"slug": section.slug, "name": section.name}
}));
// Properly logs processed data.
console.log(s[0]);
this.setState({sections: s});
// Logs `null`.
console.log(this.state.sections);
}
componentDidMount()
{
this.getItemSections();
}问题是我不能用来自外部源的新计算的数据设置状态,无论如何都不能正确地设置状态,奇怪的是内容被正确地记录在其他任何地方。我做错了什么?
发布于 2018-07-16 02:00:34
setState()函数不会立即改变this.state,但会创建一个挂起的状态转换。参考Here
如果您想要等待状态更改发生,然后使用状态:
this.setState({variable: <yourvalue> }, function () {
console.log(this.state);
});https://stackoverflow.com/questions/51350759
复制相似问题