设计如何确定state

51 阅读2分钟

确定 UI state 的最小(且完整)表示

想要使你的 UI 具备交互功能,需要有触发基础数据模型改变的能⼒。React 通过实现 state 来完成这个任务。

为了正确地构建应⽤,你⾸先需要找出应⽤所需的 state 的最⼩表⽰,并根据需要计算出其他所有数据。只保留应⽤所需的可变 state 的最⼩集合,其他数据均由它们计算产⽣。

通过问⾃⼰以下三个问题,你可以逐个检查相应数据是否属于 state:

  1. 该数据是否是由⽗组件通过 props 传递⽽来的?如果是,那它应该不是 state。
  2. 该数据是否随时间的推移⽽保持不变?如果是,那它应该也不是 state。
  3. 你能否根据其他 state 或 props 计算出该数据的值?如果是,那它也不是 state。

确定 state 放置的位置

我们已经确定了应⽤所需的 state 的最⼩集合。接下来,我们需要确定哪个组件能够改变这些 state,或者说拥有这些 state。

注意:React 中的数据流是单向的,并顺着组件层级从上往下传递。哪个组件应该拥有某个 state 这件事,对初学者来说往往是最难理解的部分。尽管这可能在⼀开始不是那么清晰,但你可以尝试通过以下步骤来判断:

对于应⽤中的每⼀个 state:

  1. 找到根据这个 state 进⾏渲染的所有组件。
  2. 找到他们的共同所有者(common owner)组件(在组件层级上⾼于所有需要该 state 的组件)。
  3. 该共同所有者组件或者⽐它层级更⾼的组件应该拥有该 state。
  4. 如果你找不到⼀个合适的位置来存放该 state,就可以直接创建⼀个新的组件来存放该 state,并将这⼀新组件置于⾼于共同所有者组件层级的位置