Open MrSeaWave opened 3 years ago
https://zh-hans.reactjs.org/docs/hooks-intro.html#motivation
响应式的useEffect,对比componentDidmount和componentDidUpdate,useEffect带来的心智负担更大。
写函数组件时,你不得不改变一些写法习惯。你必须清楚代码中useEffect和useCallback的“依赖项数组”的改变时机。有时候,你的useEffect依赖某个函数的不可变性,这个函数的不可变性又依赖于另一个函数的不可变性,这样便形成了一条依赖链。一旦这条依赖链的某个节点意外地被改变了,你的useEffect就被意外地触发了,如果你的useEffect是幂等的操作,可能带来的是性能层次的问题,如果是非幂等,那就糟糕了。
hooks不擅长异步的代码(旧引用问题,闭包)
custom hooks有时严重依赖参数的不可变性
参考:https://zhuanlan.zhihu.com/p/88593858
动机 官方文档中提到,hooks解决了之前react存在的一些问题:
在组件之间复用状态逻辑很难: HOC、Render props都会导致组件嵌套层级过深; 复杂组件变得难以理解: 大型组件不易理解,很难拆分和重构; 难以理解的 class: this的指向问题;
简单来说,hooks让函数组件拥有了自己的内部状态,能让我们更好地进行代码逻辑复用。
https://segmentfault.com/a/1190000039219500
优点
https://zh-hans.reactjs.org/docs/hooks-intro.html#motivation
缺点
响应式的useEffect,对比componentDidmount和componentDidUpdate,useEffect带来的心智负担更大。
hooks不擅长异步的代码(旧引用问题,闭包)
custom hooks有时严重依赖参数的不可变性