【发布时间】:2016-11-19 23:43:38
【问题描述】:
NavigationStateUtils.js 上的 React-Native 导航实验,
在这里使用 Slice 的目的是什么,因为即使不使用 slice(),它也会返回完全相同的路由数组。
或者只是为了和pop保持一致。
【问题讨论】:
标签: javascript arrays facebook navigation react-native
NavigationStateUtils.js 上的 React-Native 导航实验,
在这里使用 Slice 的目的是什么,因为即使不使用 slice(),它也会返回完全相同的路由数组。
或者只是为了和pop保持一致。
【问题讨论】:
标签: javascript arrays facebook navigation react-native
目的大概是在修改state.routes数组之前创建一个副本,以免改变state.routes引用的原始数组。保持数据结构不可变(通过制作您修改的副本,而不是修改原始数据)可以帮助避免在数组/对象/等时出现意外错误。由代码的其他部分修改。这是函数式编程中常用的原则,也是 React 普遍遵循的范式。
【讨论】:
const routes = state.routes,这并不明显,但我们并没有创建state.routes 数组的副本——您只是创建了一个实际上仍然存在的新变量routes引用内存中与state.routes 相同的底层数组。有关更多解释,您可以查看 pass by value 与 pass by reference 的概念。您必须使用 .slice() 之类的东西来实际创建底层数组的副本,然后再将其分配给新变量。