首页 > 解决方案 > useState 未在第一次渲染时注册

问题描述

我有一个非常简单的反应应用程序。我正在尝试设置一个状态变量,然后在 console.log 之后立即设置该变量,但得到一个空白值。

var [techFilterTerm, setTechFilterTerm] = useState('');
setTechFilterTerm('Test');
console.log(techFilterTerm);

我希望在第一次渲染时这会在控制台中显示“测试” - 但是它显示的是空字符串。这里发生了什么?

标签: reactjsreact-hooks

解决方案


如果我正确理解您的问题,您想知道更新的值,为此您可以使用 useEffect api,只要您要观察的值之一发生变化,就会调用该 API。您想要观察的值需要作为第二个参数作为 useEffect 中的数组传递。在您的情况下,您想知道 techFilterTerm 的更新值,以便您可以将 techFilterTerm 作为第二个参数传递给 useEffect,如下所示。

 useEffect(() => {
      //here you will get the updated value whenever there is change in value
  },[techFilterTerm]); 

这是有关 useEffect 的更多信息的链接。

https://reactjs.org/docs/hooks-effect.html


推荐阅读