笔记,参考《React.js实战》
组件中变量应不应该作为组件state,可通过下面的4条依据进行判断:
- 这个变量是否是通过Props从父组件中获取?如果是,那么它不是一个状态。·
- 这个变量是否在组件的整个生命周期中都保持不变?如果是,那么它不是一个状态。
- 这个变量是否可以通过其他状态(state)或者属性(Props)计算得到?如果是,那么它不是一个状态。
- 这个变量是否在组件的render方法中使用?如果不是,那么它不是一个状态。这种情况下,这个变量更适合定义为组件的一个普通属性,例如组件中用到的定时器,就应该直接定义为this.timer,而不是this.state.timer。
以下几种情况下可能根本不需要Redux:
- 项目中已经有一个预先定义的方式来共享和安排组件状态。
- 应用程序只包含大部分简单的操作(如UI更改),则这些操作并不一定是Redux存储的一部分,可以在组件级别进行处理。
- 不需要管理服务器端事件(SSE)、不需要与服务器大量交互,也没有使用websockets。
- 可以从每个视图的单个数据源获取数据。
从组件的角度考虑,Redux适用于如下场景:
- 某个组件的状态需要共享。
- 某个状态需要在任何地方都可以拿到。
- 一个组件需要改变全局状态。
- 一个组件需要改变另一个组件的状态。