class组件逻辑复用
- Mixins 早已废弃
- 高阶组件 HOC
- render prop
高阶组件 HOC
- 组件层级嵌套过多,不易渲染,不易调试
- HOC 会劫持 props,必须严格规范,容易出现疏漏
Render Prop
- 学习成本高,不易理解
- 只能传递纯函数,而默认情况下纯函数功能有限
React Hooks做逻辑复用好处
- 完全符合 Hooks 原有规则,没有其他要求,易理解记忆
- 变量作用域很明确
- 不会产生组件嵌套
React Hooks 注意事项
- useState 初始化值,只有第一次有效
- useEffect 内部不能修改 state ```jsx const [count, setCount] = useState(0);
useEffect(() => { const timer = setInterVal(() => { console.log(count) // 0 0 0 0 … setCount(count + 1) }, 1000)
return () => clearInterval(timer) }, []) // 依赖是 [],re-render 不会重新执行 effect 函数
// 如果没有依赖,不写第二个参数则无问题,re-render会重新执行 effect 函数 ```
- useEffect 可能出现死循环