youngwind/blog

redux使用的反思:状态存储

youngwind opened this issue · 3 comments

从react到redux

刚刚开始接触react的时候觉得react好流弊啊,但是写着写着就发现有个问题:
组件之间如何通信?我一个组件发生改变之后影响了n个组件,如何处理?
所以这时候状态管理就派上用场了,一开始用的是flux,后来转向了redux。

从redux到react

刚刚开始用redux的时候也觉得好流弊啊!把所有组件产生的状态变化都一股脑儿存储进去store。但是后来渐渐暴露了问题。
假设我们有这么一个应用场景。

一个按钮,点击它的时候显示上面的文字,再点击它的时候不显示上面的文字。

如果我们还用redux来做的话,需要这么几个步骤。

  1. 定义一个actiontype
  2. 定义一个action函数
  3. 定义一个reducer函数
  4. 在点击事件中触发action

太TM长了!我不就想显示和隐藏吗。。。用得着这么费劲吗。。

问题核心

渐渐想明白:redux是一个状态管理工具,使用它本来就是为了管理公共状态的。组件A发生的变化影响了组件BCD,那么使用它很方便。但是,如果组件A的变化只影响它本身(包括未来也不会影响其他组件),那么何不回到react,把这个状态直接存储到组件本身上呢?只需要一步,this.setState()

渐渐觉得,使用某种工具,但是不被限制于它,有很长的路要走。

應該這樣說,不同的情境需要不同的做法。
Redux並不是每個時候都適用

flux架构主要解决的问题之一就是组件间的通信问题。如果只是单个组件内的状态,确实用局部状态就可以了~

回归初心 😆 不为了 Redux 而 Redux