Javascript 为什么在Redux中需要纯减缩函数
我对redux和研究这个框架还不熟悉。正如中所建议的,它需要返回新的状态对象,而不是改变以前的状态。我只是不明白这样做的目的。JS参数是按值调用的,因此更改参数不会更新原始值。那么这样做有什么意义呢 JS参数是按值调用的,因此更改参数不会更新原始值 的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了 例如:Javascript 为什么在Redux中需要纯减缩函数,javascript,redux,Javascript,Redux,我对redux和研究这个框架还不熟悉。正如中所建议的,它需要返回新的状态对象,而不是改变以前的状态。我只是不明白这样做的目的。JS参数是按值调用的,因此更改参数不会更新原始值。那么这样做有什么意义呢 JS参数是按值调用的,因此更改参数不会更新原始值 的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了 例如: 函数非纯(obj){ //修改对象状态 ++目标计数器; } var o={计数器:0}; 非纯(o); 控制台日志(o.
函数非纯(obj){
//修改对象状态
++目标计数器;
}
var o={计数器:0};
非纯(o);
控制台日志(o.计数器)代码>
JS参数是按值调用的,因此更改参数不会更新原始值
的确,但是如果传递的值是一个对象引用(与对象一样),并且您使用该对象引用来更改对象的状态,那么它就不再是一个纯函数了
例如:
函数非纯(obj){
//修改对象状态
++目标计数器;
}
var o={计数器:0};
非纯(o);
控制台日志(o.计数器)代码>好问题。首先,您对JavaScript的传递值的理解并不准确。你可以参考这个问题的基本理论
因此,情况是传入的项是按值传递的。但通过值传递的项本身就是引用。从技术上讲,这就是所谓的
这就解释了,另一个问题是我们为什么要保持以前的状态
答案很简单:因为我们希望这些州可以跟踪,并且更易于管理。Redux正是帮助我们管理这一点的工具
假设有一个由几个状态组成的堆栈,如果您改变了状态本身,而不是复制并将其推到堆栈顶部。你会发现很难回到以前的状态。而且它变得不易管理,并且容易受到大型应用程序的攻击
在Redux中,每次发送操作时,我们都以一种不可变的方式处理它。这样,所有的州都处于完美的控制之下,因此我们可以穿越历史。这是我心中的禅宗
希望有帮助 好问题。首先,您对JavaScript的传递值的理解并不准确。你可以参考这个问题的基本理论
因此,情况是传入的项是按值传递的。但通过值传递的项本身就是引用。从技术上讲,这就是所谓的
这就解释了,另一个问题是我们为什么要保持以前的状态
答案很简单:因为我们希望这些州可以跟踪,并且更易于管理。Redux正是帮助我们管理这一点的工具
假设有一个由几个状态组成的堆栈,如果您改变了状态本身,而不是复制并将其推到堆栈顶部。你会发现很难回到以前的状态。而且它变得不易管理,并且容易受到大型应用程序的攻击
在Redux中,每次发送操作时,我们都以一种不可变的方式处理它。这样,所有的州都处于完美的控制之下,因此我们可以穿越历史。这是我心中的禅宗
希望有帮助