hook优点,解决了什么问题?
1、跨组件复用: 其实 render props / HOC 也是为了复用,相比于它们,Hooks 作为官方的底层 API,最为轻量,而且改造成本小,不会影响原来的组件层次结构和传说中的嵌套地狱;(复用组件之间的状态逻辑)
2、类定义更为复杂: 不同的生命周期会使逻辑变得分散且混乱,不易维护和管理; 时刻需要关注this的指向问题; 代码复用代价高,高阶组件的使用经常会使整个组件树变得臃肿;
3、状态与UI隔离: 正是由于 Hooks 的特性,状态逻辑会变成更小的粒度,并且极容易被抽象成一个自定义 Hooks,组件中的状态和 UI 变得更为清晰和隔离。
hook为什么不能放在 if语句里?
在初始化组件的时候,hooks会维护一套数组,对应相应的state和setState方法。如果在条件渲染中使用,会导致重渲染的时候,异常的下标对应,也会导致调用的setState方法失效
避免在 循环/条件判断/嵌套函数 中调用 hooks,保证调用顺序的稳定; 只有 函数定义组件 和 hooks 可以调用 hooks,避免在 类组件 或者 普通函数 中调用; 不能在useEffect中使用useState,React 会报错提示; 类组件不会被替换或废弃,不需要强制改造类组件,两种方式能并存;
版权声明:本文为Jane_JXR原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。