【发布时间】:2019-12-14 07:09:25
【问题描述】:
为什么我没有执行 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 来做到这一点?
【问题讨论】:
-
它总是第一次运行。
-
@Domino987 我必须比较前一个值和当前值吗?我如何用钩子做到这一点?
-
UseEffect 为您比较 prev 和 current 值(作为第二个参数传递的值)。在第一次渲染中,prev 值是未定义的,因此它与当前值不同。这就是它被执行的原因。
-
@Domino987 问题不在于它被执行的原因,我想摆脱警告。
标签: javascript reactjs