繁体   English   中英

不可变变量和纯 function 更新 state

[英]Immutable variable and pure function updating state

我正在学习不变性和纯函数。 作为一个新手,我很挣扎,我不明白下面的代码是否会发生变异 state 或数据。

这是代码

let state = [];

const updateState = (state, data) => {
  return [...state, data];
}

state = updateState(state, 1);


console.log(state);

我想使用一个纯 function 接收 state 和数据并更新原始 state。

这一行state = updateState(state, 1); 对我来说感觉像是一个突变,但我不确定。 我是在变异 state 吗?

谢谢你的帮助。 我正在尝试学习。

是的,您的代码在您认为的位置发生了变异 state 。 updateState是纯 function 因为它没有副作用,不会改变任何东西,并且在相同的输入下总是具有相同的返回值,但是重新分配state是一种突变。 这也是像 Redux 这样的库在后台所做的,例如这里 请注意,重要的是,当前的 state 没有发生突变,而是完全重新分配给由纯 ZC1C425268E68385D1AB50794C17A 计算的新 state 的值。 JS 在纯度和不变性方面并不是一种很好的语言,但是如果您的整个应用程序仅由函数和不可变数据组成(边缘有一些 IO),则可能永远不需要重新分配或改变任何东西( 另请参阅this问题和最佳答案)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM