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