youngwind / blog

梁少峰的个人博客
4.66k stars 385 forks source link

redux使用的反思:状态存储 #58

Open youngwind opened 8 years ago

youngwind commented 8 years ago

从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()

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

ruyaoyao commented 7 years ago

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

lowesyang commented 7 years ago

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

rccoder commented 7 years ago

回归初心 😆 不为了 Redux 而 Redux