全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  html5面试题

说说在使用Hooks的过程中,需要注意什么

发布时间:2022-11-16 16:58:53
发布人:syq

  1 首先注意到就是 useState

  里面方法是异步的,所以不要在后面连续调用,由于react方法是批量异步调用,并不是每次调用修改方法都执行,所以需要用到callback写法 const [count, setCount] = useState(0); const add = () => { setCount(count + 1); setCount(count + 1); setCount(count + 1); setCount(count + 1);

  // 就算执行多次 其实还是会只执行一次

  //class组件是用一样的 }; 修改后 const add = () => { setCount(count => count + 1);

  //这种回调函数的写法 setCount(count => count + 1); setCount(count => count + 1); setCount(count => count + 1);

  // class组件 this.setState(prev=>({count: prev.count})) };

在使用Hooks的过程中

  2 由于useState的是异步的,不要在修改后直接使用数据。

  可以先修改数据,判断数据,也可以利用useEffec,useMemo等等通过监听数据执行 const [count, setCount] = useState(0); const add = () => { setCount(count + 1); if(count>=10) { // 一个逻辑这样的写的话会执行上一次吃结果} }; 正确使用

  1 const add = () => { let n = count +1 if(n){ //逻辑 } setCount(n) }; 正确

  2 : const add = () => [ setCount(count+1) ] useEffect(()=>{ // 这里是逻辑 },[count])

  3 useEffect hook的使用

  useEffect 这个hook的使用,每一个消耗性能的内容都可以通过return 来消除 useEffect(()=>{ // 逻辑1 return ()=>{ // 清楚逻辑1的副作用 } },[监听的值])

  4 如果子组件是函数组件需要利用useImperativeHandle ,forWard

  useRef 可以获取组件的数据,也可当常量的值来使用,注意获取数据使用的时候函数组件特别需要注意,如果子组件是函数组件需要利用useImperativeHandle ,forWard

相关文章

前端公司面试题——jquery移除class

2023-08-07

前端JavaScript面试题——js时间戳转换时间的方法

2023-08-04

前端中JavaScript常见的面试题——js年月日转为时间戳

2023-08-02

前端jquery面试题——jquery字符串包含哪些?

2023-08-01

前端JavaScript面试题——js如何创建函数?

2023-07-31

前端程序员面试题——jquery发送get请求的步骤

2023-07-28
在线咨询 免费试学 教程领取