当前位置:网站首页>Effet d'utilisation, déclenché lorsque les composants de la fonction sont montés et déchargés
Effet d'utilisation, déclenché lorsque les composants de la fonction sont montés et déchargés
2022-07-06 16:13:00 【Hauteur de rêve 1M8】
1 Sans paramètres
Après le premier rendu et après chaque mise à jour
<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('DéclencheuruseEffect' + number); }); return <button onClick={
() => setNumber(number + 1)}>Cliquez sur{
number}</button> } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>
Chaque mise à jour,DéclencheuseEffect
2 Avec paramètres
Peut passer plusieurs[param1,param2,param3....]
Exécuter lorsque les paramètres spécifiés changent
<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('DéclencheuruseEffect' + 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>
SeulementchangeMise à jour,Pour déclencheruseEffect
3 Tableau vide entrant
Une seule fois effect(Effectuer uniquement lorsque les composants sont montés et déchargés)
<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('DéclencheuruseEffect' + number); setNumber(5) }, []); return <button onClick={
() => setNumber(number + 1)}>Cliquez sur{
number}</button> } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>
( Le début a été rafraîchi )Lors du montageuseEffectPrends ça.numberSet to5, Les mises à jour ultérieures ne sont pas déclenchées useEffect
4 effectRenvoie la fonction
Exécuter la fonction de retour lors de la désinstallation
Par exemple avec un minuteur , C'est le cas sans fonction de retour
<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('DéclencheuruseEffect' + number) let interval = null; let t = 0 interval = setInterval(() => {
console.log('Minuterie', t); setNumber(++t) }, 1000); }, []); return <div>Minuterie{
number}</div> } const customSwitch = () => {
const [on, setOn] = React.useState(false); return [<button onClick={
() => setOn(!on)}>{
on ? 'Fermer' : 'Ouvert'}</button>, on && <Custom />] } const domContainer = document.querySelector('#root'); ReactDOM.render(e(customSwitch), domContainer); </script>
</html>
customLors du déchargement des composants, Le minuteur n'a pas été annulé , Après le rechargement , Avec deux minuteurs 
Annuler le minuteur dans la fonction de retour
<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('DéclencheuruseEffect' + number) let t = 0 interval = setInterval(() => {
console.log('Minuterie', t); setNumber(++t) }, 1000); return ()=> {
console.log(' Déclenché lors du déchargement effect') clearInterval(interval) } }, []); return <div>Minuterie{
number}</div> } const customSwitch = () => {
const [on, setOn] = React.useState(false); return [<button onClick={
() => setOn(!on)}>{
on ? 'Fermer' : 'Ouvert'}</button>, on && <Custom />] } const domContainer = document.querySelector('#root'); ReactDOM.render(e(customSwitch), domContainer); </script>
</html>
DésinstallercustomQuand,Annuler le minuteur, Quand il est monté à nouveau ,Allumez le minuteur.
Site officiel:https://react.docschina.org/docs/hooks-effect.html
C'est aussi bien écrit :https://blog.csdn.net/aiwwy/article/details/123338490
边栏推荐
- [teacher Gao UML software modeling foundation] collection of exercises and answers for level 20 cloud class
- 树莓派CSI/USB摄像头使用mjpg实现网页摄像头监控
- Nodejs+vue online fresh flower shop sales information system express+mysql
- 628. Maximum product of three numbers
- Suffix expression (greed + thinking)
- Share an example of running dash application in raspberry pie.
- 1323. Maximum number of 6 and 9
- F - birthday cake (Shandong race)
- Data storage in memory & loading into memory to make the program run
- 渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集
猜你喜欢

Vs2019 initial use

1005. Maximized array sum after K negations

【练习-4】(Uva 11988)Broken Keyboard(破损的键盘) ==(链表)

Penetration test (8) -- official document of burp Suite Pro

605. Planting flowers

628. Maximum product of three numbers

分享一个在树莓派运行dash应用的实例。

QWidget代码设置样式表探讨
Quick to typescript Guide

滲透測試 ( 1 ) --- 必備 工具、導航
随机推荐
渗透测试 ( 8 ) --- Burp Suite Pro 官方文档
Candy delivery (Mathematics)
MySQL grants the user the operation permission of the specified content
(POJ - 2739) sum of constructive prime numbers (ruler or two points)
渗透测试 ( 2 ) --- 渗透测试系统、靶机、GoogleHacking、kali工具
[exercise-9] Zombie's Treasury test
1689. Ten - the minimum number of binary numbers
Read and save zarr files
Information security - Epic vulnerability log4j vulnerability mechanism and preventive measures
Flask框架配置loguru日志庫
Configuration du cadre flask loguru log Library
AcWing——第55场周赛
1529. Minimum number of suffix flips
Programmers, what are your skills in code writing?
Opencv learning log 26 -- detect circular holes and mark them
If you want to apply for a programmer, your resume should be written like this [essence summary]
The "sneaky" new asteroid will pass the earth safely this week: how to watch it
409. Longest palindrome
QT实现圆角窗口
Advancedinstaller安装包自定义操作打开文件