redux vs this.state in native native

时间:2015-12-07 10:23:06

标签: react-native redux

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

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

然而,当涉及到维持一种不同的状态 - 比如用户所处的当前状态时 - 我发现使用redux非常困难,因为我必须独立于{{保持自己的屏幕历史。 1}}。当有嵌套的导航器时,它变得很困难,并且不清楚哪个状态"返回"应该带用户。

我想知道什么是一些好的经验法则或情况,使用Navigator vs redux而不是手动保持状态(如使用Navigator)是合适的。

1 个答案:

答案 0 :(得分:9)

一般来说,Redux位于您的智能组件之上#34;仅向他们提供他们想要处理的全局应用程序状态。我会说,通常一个人总是将状态存储在他们的Redux商店中,除非所使用的状态实际上是组件的内部功能,并且永远不会在其他地方使用。

这方面的一个例子可能是存储textInput字段的值,其中值本身不是其他组件感兴趣的部分,也许它与其他值一起编译,或者你只想制作它一旦满足一些长度要求或其他组件,可用于其他组件。在这种情况下,我将它存储在我的组件状态中,最后将它存放在redux存储中。

国家存储"规则"我亲自关注:

  1. 只要某个值对应用程序的任何其他部分感兴趣,以后可能有价值,或者会传递给其他组件(聪明或愚蠢),必须进入终极版
  2. 如果某个值对于您的应用程序的其余部分实际上是无意义的,那么 MAY 将通过该组件的状态在内部管理到组件,直到受到上述操作的影响。
  3. 关于导航员的具体问题,不知道"返回"是的,为什么不改为将route状态实现为数组呢?您可以进一步编写包含navigator mapStateToProps函数的组件,仅查看routes中的最后一项。

    mapStateToProp(state) {
        return { currentRoute: state.route && state.route[state.route.length-1] }
    }