状态管理的what why how

当你遇到无法解决的问题时,再使用状态管理,否则无需使用。

What

狭义的状态管理:

用单一数据流的思想指导整个系统,并把状态存储到特定的地方,再UI组件层通过一些选择器把需要的组件取出,最后渲染到UI上。

  1. 数据流的方向性管理,如Flux
  2. 系统状态的框架性管理,如Redux,Mobx
  3. 组件生命周期内的状态管理,例如setState/hooks

how

  1. UI分层
    好的状态管理应该做到 UI 层独立,并让状态管理的逻辑尽量少侵入到 UI 层。另一个说法是要保持 UI 层的纯度,只要相同的数据传到 UI 层,就应该是相同的表现,那么以后换一个状态管理方案,或者说一些 Api 层面的改动,再或者是引入了 BFF,减轻了前端逻辑的负担,那么这些改动只需要在状态管理的领域中完成即可,UI 层完全可以不用改动,这种做法大大减轻了前端开发的上下文负担,而且对单元测试十分友好。

  2. 单一数据流和单向数据源
    单一数据源和单向数据流是做好状态管理的关键,这能使应用从乱七八糟的状态中解救出来,单一数据源要求客户端应用的关键数据都要从同一个地方获取,而单向数据流要求应用内状态管理的参与者都要按照一条流向来获取数据和发出动作,不允许双向交换数据,如下图

img

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×