我一直在寻找一些示例代码反应过来(在antd文档),我注意到他们的代码等同于:React setState直接修改prevState的分支?
this.setState(prevState => { prevState.name = "NewValue"; return prevState; });
这看起来有点调皮,但它实际上破坏任何东西?由于它使用箭头函数,因此即使React在后台对它们进行批处理,也不会中断正在应用的更改的顺序。
当然,setState旨在期望一个部分状态,因此可能会出现性能副作用,因为它可能会尝试将整个状态应用于自身。
编辑:(响应于@Sulthan)
实际的代码是这样的:
handleChange(key, index, value) {
const { data } = this.state;
data[index][key].value = value;
this.setState({ data });
}
N.B.数据是一个数组,所以它只是被引用复制然后发生了变异。
它实际上完全错误,因为它甚至不使用箭头函数来获取最新状态。
它来自于可编辑的表格例子在这里:https://ant.design/components/table/
你能链接这个例子吗?箭头函数将返回赋值的结果,并且绝对看起来不正确。 – Sulthan
@Sulthan会将其添加到帖子中。 – DanH
你的例子根本就不相同。这意味着完全不同的东西。 – Sulthan