React Hooks之useEffect

useEffect

在学习useEffec之前,我们可能需要了解一下什么是副作用

副作用

React组件有部分逻辑都可以直接编写到组件的函数体中的,像是对数组调用filter、map等方法,像是判断某个组件是否显示等。但是有一部分逻辑如果直接写在函数体中,会影响到组件的渲染,这部分会产生“副作用”的代码,是一定不能直接写在函数体中。

例如:如果直接将setState的逻辑编写到了组件之中,这样就不停的更新状态,所以在状态更新后就会导致组件不断的循环渲染,直至调用次数过多内存溢出。

基于以上,就可以深入了解一下什么是hook

钩子(hook)就是 React 函数组件的副效应解决方案,用来为函数组件引入副效应。 useEffect()是通用的副效应钩子 。找不到对应的钩子时,就可以用它。

Effect的作用

这个hook可以让你在函数式组件中执行副作用,例如请求数据、订阅事件、修改DOM等。它接受一个函数作为参数,这个函数会在组件渲染后执行。同时也可以传递一个数组作为第二个参数,监听哪些状态变化时才需要执行副作用,并且还将在界面初始化的时候执行。由于是数组,所以这个监听对象可以是多个。

当然这第二个参数也可以是空数组,这样就表示副作用函数没有任何依赖项,因此只会在组件首次渲染后、以及组件卸载执行一次,后面组件重新渲染时不会再执行,非常适合初始化的时候,向后端请求数据。

 // 定义一个副作用函数,用于根据props.id请求用户数据
  useEffect(() => {
    fetch(`https://jsonplaceholder.typicode.com/users/${props.id}`)
      .then(response => response.json())
      .then(data => setUser(data));
  }, [props.id]); // 只有当props.id变化时才执行副作用

关于Effect

如果有多个副效应,应该调用多个useEffect(),而不应该合并写在一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值