React-useEffect

1.概念

说明:用于在React组件中创建不是由事件引起而是由渲染本身引起的操作,比如发送

A列AX请求,更改DOM等。

2.案例

javascript 复制代码
// useEffect用于组件不是由事件引起的而是由渲染本身引起的操作,如ajax,更改Dom等。
import { useEffect, useState } from "react";

const URL=`https://st2msh.laf.run/react_get_list`
function App() {
  // 创建一个状态数据
  const [list, setList]=useState([])
  useEffect(()=>{
    // 额外操作,获取频道列表
   async function getList(){
    const res= await fetch(URL)
    const list=await res.json()
    console.log(list);
     setList(list)

    }
    getList()
  },[

  ])
  return (
    <div>
      <ul>
        {list.map(item=><li key={item.id}>{item.name}</li>)}
      </ul>
    </div>
  );
}

export default App;

3.useEffect依赖项参数说明

4.useEffect-清除副作用

说明: 在useEf什ect中编写的由渲染本身引起的对接组件外部的操作,社区也经常把它叫做副作用操作,比如在useEffect中开启了一个定时器,我们想在组件卸载时把这个定时器再清理掉,这个过程就是清理副作用。

javascript 复制代码
function Son() {
  useEffect(()=>{
  const timer=setInterval(()=>{
      console.log("定时器执行中");
    },1000)
    return ()=>{
      // 清除副作用(组件卸载时)
      clearInterval(timer)
    }
  },[])
  return <div>this is son</div>;
}

5.源代码

javascript 复制代码
import { useEffect, useState } from "react";

function Son() {
  useEffect(()=>{
  const timer=setInterval(()=>{
      console.log("定时器执行中");
    },1000)
    return ()=>{
      // 清除副作用(组件卸载时)
      clearInterval(timer)
    }
  },[])
  return <div>this is son</div>;
}
function App() {
  // 通过条件渲染模拟组件卸载
  const [show,setShow]=useState(true)
  return (
    <div>
      {show &&<Son></Son>}
      <button onClick={()=>setShow(false)}>卸载Son组件</button>
    </div>
  );
}

export default App;
相关推荐
不好听6135 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus5 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子6 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech6 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn6 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧8 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw9 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯9 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能
a1117769 小时前
微光小屋-前端养成小游戏 开源项目
前端