我正在观看这个视频https://youtu.be/0ZJgIjIuY7U学习useEffect
根据视频,return应该先运行,然后是useEffect本身。但是,我的useEffect在返回之前运行。正确的执行顺序应该是什么?
我代码:
import React, { useState, useEffect, useRef } from 'react';
export default function Use_Effect() {
const [ val , setVal ] = useState(0)
useEffect( () => {
console.log('add')
return (
console.log('return')
)
}, [val] )
return (
<div>
<input value={val} onChange={() => {
setVal(pre => pre + 1)
console.log("main window",{val})}}
/>
</div>
)
}
视频说我应该得到return ->添加→返回→添加
但是我得到add ->返回→添加→返回
Thanks very much
useEffect
需要返回一个函数,该函数是在重新运行效果时运行以清除效果副作用的函数:
import React, { useState, useEffect, useRef } from 'react';
export default function Use_Effect() {
const [ val , setVal ] = useState(0)
useEffect( () => {
console.log('add')
return () => {
console.log('return')
}
}, [val] )
return (
<div>
<input value={val} onChange={() => {
setVal(pre => pre + 1)
console.log("main window",{val})}}
/>
</div>
)
}
在这种情况下,add
将首先显示,return
将只在效果再次运行之前显示。