在egghead.io找到小型系列讲座后,我和redux一起工作了一段时间。我试图理解redux和this.state
之间的区别,以及何时适合使用它。
在redux之前,我设置了一个全局容器组件,它承载了整个应用程序的状态。例如,当它从websocket接收到数据更改时,它会在相应的状态项上调用this.setState
,从而触发UI更改(例如,将新TODO添加到TODO列表中)到其子组件。我发现redux是一个很好的替代品。
然而,当涉及到维持一种不同的状态 - 比如用户所处的当前状态时 - 我发现使用redux非常困难,因为我必须独立于{{保持自己的屏幕历史。 1}}。当有嵌套的导航器时,它变得很困难,并且不清楚哪个状态"返回"应该带用户。
我想知道什么是一些好的经验法则或情况,使用Navigator
vs redux而不是手动保持状态(如使用Navigator)是合适的。
答案 0 :(得分:9)
一般来说,Redux位于您的智能组件之上#34;仅向他们提供他们想要处理的全局应用程序状态。我会说,通常一个人总是将状态存储在他们的Redux商店中,除非所使用的状态实际上是组件的内部功能,并且永远不会在其他地方使用。
这方面的一个例子可能是存储textInput字段的值,其中值本身不是其他组件感兴趣的部分,也许它与其他值一起编译,或者你只想制作它一旦满足一些长度要求或其他组件,可用于其他组件。在这种情况下,我将它存储在我的组件状态中,最后将它存放在redux存储中。
国家存储"规则"我亲自关注:
关于导航员的具体问题,不知道"返回"是的,为什么不改为将route
状态实现为数组呢?您可以进一步编写包含navigator
mapStateToProps
函数的组件,仅查看routes
中的最后一项。
mapStateToProp(state) {
return { currentRoute: state.route && state.route[state.route.length-1] }
}