你不知道的React系列(三十一)状态提升

48 阅读1分钟

本文正在参加「金石计划」

概念

  • 多个组件同时修改同一数据state,就将这个state提升到父组件中去

    任何state应当只有一个相对应的唯一“数据源”

    如果某些数据可以由 props 或 state 推导得出,那么它就不应该存在于 state 中

  • 依靠自上而下的数据流,而不是尝试在不同组件间同步 state

步骤

  • 从子组件中 移除 state 。
  • 从父组件 传递 硬编码数据。
  • 为共同的父组件添加 state ,并将其与事件处理函数一起向下传递。

好处

  • 排查和隔离 bug 所需的工作量将会变少
  • 组件中的任何 state,仅有组件自己能够修改它,因此 bug 的排查范围被大大缩减了
  • react-devtools
  • 可以添加自定义逻辑来拒绝或转换用户的输入