当前位置:网站首页>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
边栏推荐
- 渗透测试 ( 7 ) --- 漏洞扫描工具 Nessus
- 1689. Ten - the minimum number of binary numbers
- Codeforces Round #798 (Div. 2)A~D
- [exercise 4-1] cake distribution
- C language must memorize code Encyclopedia
- 树莓派4B64位系统安装miniconda(折腾了几天终于解决)
- 【练习-6】(PTA)分而治之
- Shell Scripting
- Alice and Bob (2021 Niuke summer multi school training camp 1)
- Socket communication
猜你喜欢
树莓派4B安装opencv3.4.0
Pytorch extract skeleton (differentiable)
C language must memorize code Encyclopedia
860. Lemonade change
QT实现圆角窗口
Codeforces Round #799 (Div. 4)A~H
渗透测试 ( 8 ) --- Burp Suite Pro 官方文档
Read and save zarr files
Write web games in C language
2078. Two houses with different colors and the farthest distance
随机推荐
Is the sanic asynchronous framework really so strong? Find truth in practice
QWidget代码设置样式表探讨
1903. Maximum odd number in string
2027. Minimum number of operations to convert strings
最全编程语言在线 API 文档
605. Planting flowers
Ball Dropping
力扣——第298场周赛
Suffix expression (greed + thinking)
JS call camera
The concept of C language array
(POJ - 3685) matrix (two sets and two parts)
Opencv learning log 28 -- detect the red cup cover
Hdu-6025-prime sequence (girls' competition)
QT实现窗口渐变消失QPropertyAnimation+进度条
pytorch提取骨架(可微)
[exercise-3] (UVA 442) matrix chain multiplication
日期加1天
Codeforces - 1526C1&&C2 - Potions
[exercise 4-1] cake distribution