React 实践
减小 hook 的心智负担
useEffect 的依赖不要过多: 可以通过多写几个 useEffect,或者拆分组件来减少逻辑复杂度
不需要作为依赖时,可以在 useEffect 里使用 ref 访问最新的 state 或 props
tips
hook 的问题:当业务变动,逻辑变复杂,简单地增加 useEffect 的依赖,容易导致 bug。通过 ref 取最新值,减少 useEffect 的依赖。
函数组件实现尽量简单,不要有 CPU 密集型代码,或者通过 Memo,useMemo,lazy useState 优化
组件逻辑尽量小,通过组件组合的形式组装业务逻辑,不要将所有业务逻辑放到一个组件里
函数组件: 注意闭包陷阱(setTimeout 等访问 state): 1. 通过 setState(pre => pre+1) 2. 通过 ref 访问 state
state 依赖 props 的情况
在 state 需要依赖 prop 时的几种模式如下,结论:只有模式 1 比较好
结论:组件的状态只由 prop 初始化,或者完全由 prop 控制。不能(既受 prop 控制,也可以在组件内部改变)。
props 作为初始化值,后续即使 props 改变,state 也不受其影响。【推荐】
初始化,结合 useEffect 监控 props 来 setState。props 可以改变 state,setState 也可以改变 state,容易让使用者困惑。【不推荐】
赋值 state,特点:props 一直可以影响 state,但是 setState 已经失去意义。【不推荐】
最后更新于
这有帮助吗?