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;
相关推荐
kong@react5 分钟前
react+ts项目,富文本开发(wangEditor)
前端·react.js·前端框架
重铸码农荣光5 分钟前
AI First + Mobile First:用大模型重构下一代应用开发范式
前端·架构·llm
Lovely_Ruby7 分钟前
前端er Go-Frame 的学习笔记:实现 to-do 功能(二),前端项目的开发,对接后端
前端
willingtolove21 分钟前
使用chrome修改请求参数重新发送请求
前端·chrome
-曾牛29 分钟前
CSRF跨站请求伪造:原理、利用与防御全解析
前端·网络·web安全·网络安全·渗透测试·csrf·原理解析
魂祈梦1 小时前
前端下载多个文件/浏览器批量下载文件
前端·浏览器
小明记账簿_微信小程序1 小时前
手写一个webpack插件(plugin)
前端
我命由我123451 小时前
微信小程序 - scroll-view 的一些要点(scroll-view 需要设置滚动方向、scroll-view 需要设置高度)
开发语言·前端·javascript·微信小程序·小程序·前端框架·js
BD_Marathon1 小时前
【JavaWeb】CSS浮动
前端·css
1024肥宅1 小时前
手写 Promise:深入理解 JavaScript 异步编程的核心
前端·javascript·promise