开发时经常会出现同一个非受控组件多次使用的情况,在需求中,如果要实现两个同样的开关组件的状态同步,有以下几种思路
1.状态提升思路,共同父元素进行状态管理,props传参解决,注意要同时传递state(值)和setState(改变值的箭头函数)
2.发布订阅思路,最大父元素进行发布,子组件订阅
3.localStorage或IndexedDB进行状态管理,过段时间就读取一次。
父元素管理,props传参 | 发布订阅 | 固定时长读取内存 | |
优点 | 结构清晰,条理清楚 父元素参数变化,自动刷新视图 | 跨层级传参 | 借助存储库进行状态管理 |
缺点 | 需要逐级传递props | 可能会导致订阅树冗杂 | 性能开销大,更新不实时 |
使用场景 | 层级扁平的组件 | 层级复杂的组件 | 不需要完全实时状态同步的多个组件 |