获得徽章 0
评论
点赞
关于React的状态管理,以下文字节选自下篇。
无论是用户交互,还是UI的自主变更(如动画),变化则意味着状态的改变。React提供了几个配方,你需要的只是照方抓药:
* 简单的组件内部状态变更。这是局部感染,吃useState控制
* 复杂的组件内部状态变更,这是大面积局部感染,吃useReducer消解
* 父组件的变更需要通知到子组件。这是传染了,使用props,当药传给子组件
* 子组件变更了需要通知父组件。这是交叉传染了,父组件准备一个药盒子,作为props的一部分交给子组件,等拿药通知(回调)
* 多个组件依赖同一个状态变更。这是局部流行了。需要一起做做操出出汗,把状态提升到共同的父组件,然后等待父组件通过 props 向下发药
* 多个组件依赖一个局部的状态变更。这是零星散发。需要加速派药。使用useContext直送到家,而不是层层props转发
* 多个组件依赖于多个状态。这是大面积流行。需要集体防治。使用useContext + useReducer联合才能起效
* 全局多个状态复杂依赖。这是新冠叠加1908大流感。你需要三方药厂来协助简化处理,如Zustand, Jotai等
药虽好,但不能瞎吃。吃不对,不仅问题不能解决,还带来没必要的复杂性甚至导入更严重的问题。这就考验开方大夫的功力了。我们通过后面的实际开发,让大家都成为合格的React医生。
无论是用户交互,还是UI的自主变更(如动画),变化则意味着状态的改变。React提供了几个配方,你需要的只是照方抓药:
* 简单的组件内部状态变更。这是局部感染,吃useState控制
* 复杂的组件内部状态变更,这是大面积局部感染,吃useReducer消解
* 父组件的变更需要通知到子组件。这是传染了,使用props,当药传给子组件
* 子组件变更了需要通知父组件。这是交叉传染了,父组件准备一个药盒子,作为props的一部分交给子组件,等拿药通知(回调)
* 多个组件依赖同一个状态变更。这是局部流行了。需要一起做做操出出汗,把状态提升到共同的父组件,然后等待父组件通过 props 向下发药
* 多个组件依赖一个局部的状态变更。这是零星散发。需要加速派药。使用useContext直送到家,而不是层层props转发
* 多个组件依赖于多个状态。这是大面积流行。需要集体防治。使用useContext + useReducer联合才能起效
* 全局多个状态复杂依赖。这是新冠叠加1908大流感。你需要三方药厂来协助简化处理,如Zustand, Jotai等
药虽好,但不能瞎吃。吃不对,不仅问题不能解决,还带来没必要的复杂性甚至导入更严重的问题。这就考验开方大夫的功力了。我们通过后面的实际开发,让大家都成为合格的React医生。
展开
1
1
![[偷笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_20.7a46372.png)