当前位置:网站首页>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
边栏推荐
- 875. 爱吃香蕉的珂珂 - 力扣(LeetCode)
- [exercise -10] unread messages
- QT模拟鼠标事件,实现点击双击移动拖拽等
- Alice and Bob (2021 Niuke summer multi school training camp 1)
- 渗透测试 ( 3 ) --- Metasploit Framework ( MSF )
- Frida hook so layer, protobuf data analysis
- Maximum product (greedy)
- 树莓派4B安装opencv3.4.0
- Codeforces Round #801 (Div. 2)A~C
- 【练习-2】(Uva 712) S-Trees (S树)
猜你喜欢
X-forwarded-for details, how to get the client IP
Penetration test (1) -- necessary tools, navigation
Penetration test (8) -- official document of burp Suite Pro
Programmers, what are your skills in code writing?
pytorch提取骨架(可微)
Sword finger offer II 019 Delete at most one character to get a palindrome
C language must memorize code Encyclopedia
[teacher Gao UML software modeling foundation] collection of exercises and answers for level 20 cloud class
读取和保存zarr文件
1605. Sum the feasible matrix for a given row and column
随机推荐
Codeforces Round #802(Div. 2)A~D
Pyside6 signal, slot
渗透测试 ( 2 ) --- 渗透测试系统、靶机、GoogleHacking、kali工具
Openwrt source code generation image
Advancedinstaller安装包自定义操作打开文件
Educational Codeforces Round 130 (Rated for Div. 2)A~C
读取和保存zarr文件
Essai de pénétration (1) - - outils nécessaires, navigation
[exercise-8] (UVA 246) 10-20-30== simulation
渗透测试 ( 4 ) --- Meterpreter 命令详解
Data storage in memory & loading into memory to make the program run
969. Pancake sorting
Information security - threat detection engine - common rule engine base performance comparison
1855. Maximum distance of subscript alignment
(POJ - 2739) sum of constructive prime numbers (ruler or two points)
C language is the watershed between low-level and high-level
(POJ - 3579) median (two points)
Penetration test (3) -- Metasploit framework (MSF)
The most complete programming language online API document
渗透测试 ( 3 ) --- Metasploit Framework ( MSF )