【发布时间】:2023-02-21 19:02:41
【问题描述】:
我有一个更新组件状态的 handleClick() 函数。
handleClick = () => {
let temp_map = new Map();
temp_map.set('left', null);
temp_map.set('bottom',null);
temp_map.set('right', null);
temp_map.set('top', null);
var dots = Array(75).fill(temp_map);
// dots[24]['left'] = 23;
console.log(dots[23])
dots[24].set('left', 23);
dots[23].set('right', 24)
this.setState({dots: dots});
console.log(dots)
console.log(this.state.dots)
}
在上面的代码中,我创建了一个大小为 75 的数组,并用带有键值对的映射填充它们。
dots[24].set('left', 23);
dots[23].set('right', 24);
dots 数组的 75 个位置中的所有地图如何获得其左键更新? 在我打电话之后 this.setState({dots: dots}); 然后执行 console.log(this.state.dots) 我得到以下信息:
为什么不更新状态。 非常感谢任何帮助。
【问题讨论】:
-
数组中的所有项目都是对同一个
Map对象的引用。您应该为数组中的每个项目创建一个new Map。setState是异步的。这意味着当您记录它时,它可能还没有更新。使用生命周期挂钩记录状态变化。
标签: javascript reactjs