目录前言介绍使用空依赖非空依赖实现销毁操作两者区别前言 使用缘由: 在函数中当请求数据时并且给state赋值会导致整个函数刷新, 从而导致死循环的进行数据请求, 所以这时候可以用到u
使用缘由:
在函数中当请求数据时并且给state赋值会导致整个函数刷新,
从而导致死循环的进行数据请求, 所以这时候可以用到useEffect
import axiOS from 'axios';
import React,{useEffect, useState} from 'react';
function Test2() {
const [list,setlist] =useState([])
useEffect(()=>{
axios.get("./test.JSON").then(res=>{
console.log(res.data)
setlist(res.data)
})
},[])//参数1是函数,参数2是数组
return (
<div>
{
list.map(item=>
<li key={item.id}>{item.name}</li>
)
}
</div>
);
}
export default Test2;
传空数组表示无依赖,只执行一次
数组传依赖,当该依赖更新后也会进行执行(可以想象成class类的更新)
下方案例代表第一次执行,name被更新后也会进行执行
import axios from 'axios';
import React,{useEffect, useState} from 'react';
function Test3() {
const [name,setname] =useState("peng-ke")
useEffect(()=>{
setname(name.substring(0,1).toUpperCase()+name.substring(1))
},[name])//参数1是函数,参数2是数组
return (
<div>
{name}
<button onClick={()=>{setname("study")}}>修改</button>
</div>
);
}
export default Test3;
通过return函数执行销毁后的行为
import React,{Component, useEffect, useState} from 'react';
function Children() {
const [name,setname] =useState("peng-ke")
useEffect(()=>{
window.onresize=()=>{
console.log("resize")
}
let timer=setInterval(() => {
console.log("ppppp")
}, 1000);
return ()=>{
console.log("销毁");
window.onresize=null;
clearInterval(timer)
}
},[])
return (
<div>
碰磕
</div>
);
}
class Test4 extends Component{
state={
iscreated:true
}
render(){
return(
<div>
<button onClick={()=>{
this.setState({
iscreated:!this.state.iscreated
})
}}>点我</button>
{this.state.iscreated && <Children />}
</div>
)
}
}
export default Test4;
到此这篇关于React中的useEffect useLayoutEffect到底怎么用的文章就介绍到这了,更多相关React useEffect useLayoutEffect内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: React中的useEffectuseLayoutEffect到底怎么用
本文链接: https://lsjlt.com/news/194384.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0