⚫ React Hooks 精进 8 - 复杂状态处理


状态一致性

React 开发就是复杂应用程序状态的管理和开发。

原则一:保证状态最小化

在保证 State 完整性的同时也要保证它的最小化,如果某些数据能从已有的 state 中计算得到那么不要把计算的结果存到 state 内。

按照 React 的状态驱动 UI 的思想,开发时第一步要考虑整个功能有哪几个状态

React 提供的useMemo这个 Hook 就可以缓存计算的结果。

原则二:避免中间状态,确保唯一数据源

在有些场景下,比如原始状态数据来自某个外部数据源,非 state 或者 props,冗余状态就没有那么明显,此时需要准确定位状态的数据源并在开发中确保它是唯一的数据源。

这里的例子是 URL 上查询关键词同步的场景。

实战演练:创建自定义受控组件

受控组件:组件的展示完全由传入的属性决定。

非受控组件:表单组件可以有自己的内部状态且他的展示值不受控。

自定义受控组件:

  • 避免多余的状态:不需要在自定义组件内部去定义状态用于保存数据
  • 找到准确的唯一数据源:准确且唯一的来源就是福组件传递进来的状态

思考

如何实现 useSearchParams(用于监听查询参数的变化)这个 Hook?

history.pushState 不会出发页面重新渲染,所以通常只能获取第一次的 URL 参数,如果 URL 参数发生变化无法查询到,所以可以通过 patch 的方法来监听 url 变化。


文章作者: 阿汪同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿汪同学 !
评论
  目录