当前位置:网站首页>Useeffect, triggered when function components are mounted and unloaded
Useeffect, triggered when function components are mounted and unloaded
2022-07-06 16:14:00 【Dream height 1.8 meters】
1 With no arguments
It is executed after the first rendering and after each update
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const custom = () => {
const [number, setNumber] = React.useState(0); React.useEffect(() => {
console.log(' Trigger useEffect' + number); }); return <button onClick={
() => setNumber(number + 1)}> Click on {
number}</button> } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>
Each update , Will trigger useEffect
2 With parameters
You can send more than one [param1,param2,param3....]
Execute when the specified parameter changes
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const custom = () => {
const [number, setNumber] = React.useState(0); const [change, setChange] = React.useState(0); React.useEffect(() => {
console.log(' Trigger useEffect' + number); }, [change]); return [<button onClick={
() => setNumber(number + 1)}>number{
number}</button>, <button onClick={
() => setChange(change + 1)}>change{
change}</button>] } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>
Only change When it's updated , Will trigger useEffect
3 Pass in empty array
Run only once effect( Only when the component is mounted and uninstalled )
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const custom = () => {
const [number, setNumber] = React.useState(0); React.useEffect(() => {
console.log(' Trigger useEffect' + number); setNumber(5) }, []); return <button onClick={
() => setNumber(number + 1)}> Click on {
number}</button> } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>
( The beginning is refreshed ) When you mount it useEffect hold number Set to 5, Subsequent updates do not trigger useEffect
4 effect Return function
Execute the return function when uninstalling
Take the timer as an example , This is the case when there is no return function
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const Custom = () => {
const [number, setNumber] = React.useState(0); React.useEffect(() => {
console.log(' Trigger useEffect' + number) let interval = null; let t = 0 interval = setInterval(() => {
console.log(' Timer ', t); setNumber(++t) }, 1000); }, []); return <div> Timer {
number}</div> } const customSwitch = () => {
const [on, setOn] = React.useState(false); return [<button onClick={
() => setOn(!on)}>{
on ? ' close ' : ' Turn on '}</button>, on && <Custom />] } const domContainer = document.querySelector('#root'); ReactDOM.render(e(customSwitch), domContainer); </script>
</html>
custom When the component is uninstalled , The timer did not cancel , After remounting , There are two timers
Cancel the timer in the return function
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; let interval = null; const Custom = () => {
const [number, setNumber] = React.useState(0); React.useEffect(() => {
console.log(' Trigger useEffect' + number) let t = 0 interval = setInterval(() => {
console.log(' Timer ', t); setNumber(++t) }, 1000); return ()=> {
console.log(' Trigger when unloading effect') clearInterval(interval) } }, []); return <div> Timer {
number}</div> } const customSwitch = () => {
const [on, setOn] = React.useState(false); return [<button onClick={
() => setOn(!on)}>{
on ? ' close ' : ' Turn on '}</button>, on && <Custom />] } const domContainer = document.querySelector('#root'); ReactDOM.render(e(customSwitch), domContainer); </script>
</html>
uninstall custom When , Cancel timer , When you mount again , Turn on timer .
Official website :https://react.docschina.org/docs/hooks-effect.html
This is also very good :https://blog.csdn.net/aiwwy/article/details/123338490
边栏推荐
- 【练习-2】(Uva 712) S-Trees (S树)
- 树莓派CSI/USB摄像头使用mjpg实现网页摄像头监控
- Ball Dropping
- Pyside6 signal, slot
- [analysis of teacher Gao's software needs] collection of exercises and answers for level 20 cloud class
- 7-1 understand everything (20 points)
- MySQL grants the user the operation permission of the specified content
- Configuration du cadre flask loguru log Library
- 渗透测试 ( 1 ) --- 必备 工具、导航
- Suffix expression (greed + thinking)
猜你喜欢
Information security - Epic vulnerability log4j vulnerability mechanism and preventive measures
frida hook so层、protobuf 数据解析
QT有关QCobobox控件的样式设置(圆角、下拉框,向上展开、可编辑、内部布局等)
TCP's three handshakes and four waves
Radar equipment (greedy)
Borg maze (bfs+ minimum spanning tree) (problem solving report)
Write web games in C language
Determine the Photo Position
Ball Dropping
渗透测试 ( 7 ) --- 漏洞扫描工具 Nessus
随机推荐
1855. Maximum distance of subscript alignment
QT有关QCobobox控件的样式设置(圆角、下拉框,向上展开、可编辑、内部布局等)
CEP used by Flink
Openwrt build Hello ipk
(POJ - 3258) River hopper (two points)
F - birthday cake (Shandong race)
Read and save zarr files
[exercise -10] unread messages
Pytorch extract skeleton (differentiable)
分享一个在树莓派运行dash应用的实例。
875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
树莓派4B64位系统安装miniconda(折腾了几天终于解决)
HDU - 6024 building shops (girls' competition)
Information security - threat detection - detailed design of NAT log access threat detection platform
Alice and Bob (2021 Niuke summer multi school training camp 1)
Candy delivery (Mathematics)
【练习-6】(PTA)分而治之
The "sneaky" new asteroid will pass the earth safely this week: how to watch it
Penetration test (8) -- official document of burp Suite Pro
Determine the Photo Position