redux vs this.state 在本机反应中

redux vs this.state in react native

egghead.io 上找到迷你讲座系列后,我使用 redux 工作了一段时间。我试图了解 redux 和 this.state 之间的区别以及何时适合使用 which.

在 redux 之前,我设置了一个全局容器组件来承载整个应用程序的状态。例如,当它从 websocket 接收到数据更改时,它会在适当的状态项上调用 this.setState,触发对其子组件的 UI 更改(例如,一个新的 TODO 被添加到 TODO 列表中) .我发现 redux 是一个很好的替代品。

然而,当涉及到维护一种不同类型的状态时——比如用户所处的当前状态——我发现使用 redux 非常困难,因为我基本上必须独立于Navigator。当有嵌套的导航器时,它也会变得困难,并且不清楚 "back" 应该将用户带到哪个状态。

我想知道有哪些好的经验法则或情况,在哪些情况下适合使用 this.state vs redux vs 根本不手动保持状态(比如使用 Navigator)。

通常,Redux 位于您的 "smart components" 之上,只为它们提供它们要处理的全局应用程序状态位。我想说的是,通常人们总是将状态存储在他们的 Redux 存储中,除非所使用的状态实际上是组件功能内部的,并且永远不会在其他地方使用。

这方面的一个例子可能是存储 textInput 字段的值,其中该值本身不是其他组件感兴趣的部分,可能它是与其他值一起编译的,或者您只想让它对其他组件可用一旦它满足一些长度要求什么的。在这种情况下,我会将其存储在组件的状态中,然后再最终将其存储在 redux 存储中。

我个人关注的状态存储"Rules":

  1. 只要某个值对应用程序的任何其他部分有任何意义,以后可能有价值,或者将传递给其他组件(智能或愚蠢),它必须 进入 Redux
  2. 如果一个值对于您的应用程序的其余部分来说实际上是无意义的,它可以通过该组件的状态在组件内部进行管理,直到它受到上述限制.

关于您不知道 "back" 是什么的导航器的具体问题,为什么不将您的 route 状态实现为数组呢?您可以进一步编写包装组件 navigatormapStateToProps 函数以仅查看 routes.

中的最后一项
mapStateToProp(state) {
    return { currentRoute: state.route && state.route[state.route.length-1] }
}