可读性强、组件层级变得更浅、不再需要考虑class组件中this指向、部分生命周期不支持
标准回答
优点:
缺点:hooks的useEffect只包括了componentDidMount、componentDidUpdate还有componentWillUnmount这三个生命周期,对于getSnapshotBeforeUpdate和componentDidCatch等其他的生命周期没有支持。
加分回答
使用useEffect时候里面不能写太多依赖项,将各个不同的功能划分为多个useEffect模块,将各项功能拆开写,这是遵循了软件设计的“单一职责模式”。如果遇到状态不同步的情况,使用手动传递参数的形式。如果业务复杂,就使用Component代替hooks,hooks的出现并不是取代了class组件,而是在函数组件的基础上可以实现一部分的类似class组件功能。
hooks官方指出不要在循环、条件或者嵌套函数中使用hook,确保一定是在react函数的最顶层调用它们。不要在react的class组件中调用hook,这样是无效的,应在函数组件或者自定义hook中使用它。
Hook API:
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
得分点
可读性强、组件层级变得更浅、不再需要考虑class组件中this指向、部分生命周期不支持
参考答案
标准回答
优点:
缺点:hooks的useEffect只包括了componentDidMount、componentDidUpdate还有componentWillUnmount这三个生命周期,对于getSnapshotBeforeUpdate和componentDidCatch等其他的生命周期没有支持。
加分回答
使用useEffect时候里面不能写太多依赖项,将各个不同的功能划分为多个useEffect模块,将各项功能拆开写,这是遵循了软件设计的“单一职责模式”。如果遇到状态不同步的情况,使用手动传递参数的形式。如果业务复杂,就使用Component代替hooks,hooks的出现并不是取代了class组件,而是在函数组件的基础上可以实现一部分的类似class组件功能。
延伸阅读
hooks官方指出不要在循环、条件或者嵌套函数中使用hook,确保一定是在react函数的最顶层调用它们。不要在react的class组件中调用hook,这样是无效的,应在函数组件或者自定义hook中使用它。
Hook API: