Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React本机导航实验(NavigationStateUtils),使用切片的目的?_Javascript_Arrays_Facebook_Navigation_React Native - Fatal编程技术网

Javascript React本机导航实验(NavigationStateUtils),使用切片的目的?

Javascript React本机导航实验(NavigationStateUtils),使用切片的目的?,javascript,arrays,facebook,navigation,react-native,Javascript,Arrays,Facebook,Navigation,React Native,在NavigationStateUtils.js上进行本机导航实验 在这里使用Slice的目的是什么,因为即使没有使用Slice(),它也会返回相同的路由数组 或者只是为了和流行音乐保持一致 目的可能是在修改state.routes数组之前创建该数组的副本,以避免变异state.routes引用的原始数组。当数组/对象/等被代码的其他部分修改时,保持数据结构不变(通过制作修改的副本,而不是修改原始副本)有助于避免意外的错误。这是函数式编程中常用的原则,React通常遵循的范例。目的可能是在修

在NavigationStateUtils.js上进行本机导航实验

在这里使用Slice的目的是什么,因为即使没有使用Slice(),它也会返回相同的路由数组

或者只是为了和流行音乐保持一致


目的可能是在修改
state.routes
数组之前创建该数组的副本,以避免变异
state.routes
引用的原始数组。当数组/对象/等被代码的其他部分修改时,保持数据结构不变(通过制作修改的副本,而不是修改原始副本)有助于避免意外的错误。这是函数式编程中常用的原则,React通常遵循的范例。

目的可能是在修改
state.routes
数组之前创建该数组的副本,以免变异
state.routes
引用的原始数组。当数组/对象/等被代码的其他部分修改时,保持数据结构不变(通过制作修改的副本,而不是修改原始副本)有助于避免意外的错误。这是函数式编程中常用的原则,React通常遵循这一原则。

感谢@lt1的详细解释。我理解不变性部分,但是constroutes=state.routes.slice()是如何实现的;与const routes=state.routes不同吗?新数组是一个浅拷贝如果我们执行
const routes=state.routes
,则不明显,但是我们并不是在创建
state.routes
数组的副本-您只是在创建一个新变量
routes
,它实际上仍然在内存中引用与
state.routes
相同的底层数组。关于这一点的更多解释,您可以查阅
按值传递
按引用传递
的概念。在将其分配给新变量之前,必须使用类似于
.slice()
的方法来实际创建基础数组的副本。太棒了!现在我明白了。谢谢@lt1的详细解释。我理解不变性部分,但是constroutes=state.routes.slice()是如何实现的;与const routes=state.routes不同吗?新数组是一个浅拷贝如果我们执行
const routes=state.routes
,则不明显,但是我们并不是在创建
state.routes
数组的副本-您只是在创建一个新变量
routes
,它实际上仍然在内存中引用与
state.routes
相同的底层数组。关于这一点的更多解释,您可以查阅
按值传递
按引用传递
的概念。在将其分配给新变量之前,必须使用类似于
.slice()
的方法来实际创建基础数组的副本。太棒了!现在我明白了。