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;
相关推荐
猪猪拆迁队1 小时前
前端图形引擎架构设计:双引擎架构设计
前端·后端·架构
宋辰月1 小时前
学习react第三天
前端·学习·react.js
bug总结1 小时前
更新原生小程序封装(新增缓存订阅)完美解决
前端·缓存·小程序
5335ld2 小时前
后端给的post 方法但是要求传表单数据格式(没有{})
开发语言·前端·javascript·vue.js·ecmascript
二川bro2 小时前
第33节:程序化生成与无限地形算法
前端·算法·3d·threejs
QDKuz2 小时前
掌握Vue2转Vue3, Options API 转 Composition API
前端·javascript·vue.js
老前端的功夫2 小时前
前端Echarts性能优化:从卡顿到流畅的百万级数据可视化
前端·javascript
进击的野人2 小时前
深入解析localStorage:前端数据持久化的核心技术
前端·javascript
懵圈2 小时前
第2章:项目启动 - 使用Vite脚手架初始化项目与工程化配置
前端
Mh2 小时前
如何优雅的消除“if...else...”
前端·javascript