尽管我没有执行setTest来更改测试值,但为什么日志仍会触发?我期望第一次因为测试值保持为0而不会触发日志?
function App() {
const [test, setTest ] = useState(0)
useEffect(() => {
console.log('log')
}, [test])
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
我有这样的情况。第一次加载时不执行任何操作,然后如果用户在页面上选择一个选项然后执行某项操作,我该如何使用useEffect进行操作?
最佳答案
从https:Using the Effect Hook
您的组件已呈现,useEffect
已触发,并且您的日志已运行。
听起来您可能将useEffect
(仅包含一个参数,一个回调)与其他包含多个参数的钩子(Hook)混淆了。
----编辑(注释相关)---- useEffect
不能直接替换基于类的componentDidMount
和componentDidUpdate
方法,但是由于运行时间的限制,它通常可以用来替换那些方法。 See了解更多信息。您可能还需要阅读相关的useLayoutEffect
Hook 。
如果您的意图是挂接一些“加载时”逻辑,例如事件处理程序,则不需要挂接即可。相反,您只需要一个React事件处理程序属性,例如。
<option onChange={changeHandler} />
(See以获得更多信息。)
关于javascript - react useEffect触发器,尽管依存值保持不变?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57380972/