【发布时间】:2018-06-09 10:32:42
【问题描述】:
我正在学习 react 并试图了解如何更好地处理使用数组更新组件的状态。这是我在组件的componentWillMount() 上调用的函数,用于生成稍后在此父组件中渲染的组件:
generateThings = () => {
let newThings = [];
for (let j = 0; j < this.state.numberOfThings; j++) {
const pos = this.generatePosition(1, 1);
const thingComp = <Thing key={j} position={pos} />;
newThings.push(thingComp);
}
this.setState({
things: newThings
});
};
我认为更好的方法是将push() 直接发送到状态字段 (this.state.things.push(thingComp);),而不是存储在看起来更混乱的临时变量中。但这似乎不会触发 UI 更新,所以我猜这是这样做的方法,但我不确定。
【问题讨论】:
-
您可以直接推送到状态并改用函数式
setState语法。例如:this.setState((prevState) => { prevState.things.push(...); return prevState; })。请注意,setState调用之外的变异状态不会触发更新。
标签: javascript reactjs