当前位置: 首页 > 知识库问答 >
问题:

如何在同一函数中更改useState变量

吕自怡
2023-03-14

我有这个变量:

const [userName, setUserName] = useState<string>("initialValue");

通过单击按钮,我执行此功能:

const FacebookSign = () => {
    console.log(userName);
    setUserName("value2");
    console.log(userName);
}

userName变量不会改变,我的输出是:

initialValue
initialValue

但是如果我第二次按下按钮,我会得到输出:

value2
value2

为什么值第一次不改变?

共有2个答案

林俊英
2023-03-14

调用setState时,状态不会立即更新。状态将在重新渲染后更新。您可以使用useEffect检查最新状态。

useEffect(() =>{
  console.log(userName)
},[userName])
陈朗
2023-03-14

如果你读到状态改变机制是如何工作的。该过程本质上是异步的。所以可能会也可能不会立即改变。在这里阅读更多关于它的信息是useState synchronous吗?

还可以使用useffect()钩子立即查看状态更改。

 类似资料:
  • 我有一个非常简单的功能组件,它从localStorage获取日期并显示它。我有两个按钮来添加或删除日期后的周数,我希望显示新的日期。但是,该组件不会被渲染。 此组件的预期行为是获取时间戳,然后显示该时间戳的月份和年份。加载时,它正确地显示了2021年1月,但是当我在onLefthtml上单击几次时,它并没有呈现组件,尽管我期望它显示2021年12月。计算是正确的,我想我在这里丢失了功能组件渲染的概

  • 在下面的代码中,我想给一个函数中的3个变量赋值。如果我只有一个变量,我可以简单地返回新值。有没有一种简单的方法可以在一个函数中使用多个变量(不使用复杂的方法,如将变量变成数组并返回数组)? 这是我的代码:

  • 我们正在开发几个部署到Azure Function Apps的Quarkus(在撰写本文时为2.5.4)应用程序。 我们注意到,我们所有的日志,无论代码的严重性如何,都在应用洞察中显示为信息。 我们已将 jboss 日志管理器添加到依赖项中: 当我检查日志时,它显示为这样。 2022-02-24T07:58:14.325[Information] 2022-02-24T07:58:14.308[I

  • 问题内容: 我是Flask和python的新手。我有一堆视图以jsonify()格式返回字典。对于这些视图,我想添加一个after_request处理函数以更改响应,以便可以向该字典添加键。我有: 我得到的错误是“ TypeError:列表索引必须是整数,而不是str”。请求完成后,如何更改响应字典并添加密钥? 问题答案: 是WSGI对象,这意味着响应的主体必须是可迭代的。对于响应来说,这只是一个

  • 因此,在重构我的基于类的聊天机器人组件以使用反应钩子的过程中,我遇到了一个使用状态钩子覆盖状态中的对象的问题。这导致只有机器人响应显示在用户界面中。当我与机器人聊天时,用户界面中显示的用户输入的闪光会被聊天机器人的响应覆盖。下面是代码: 可以这样在同一个异步函数中写入useState两次吗?如果不是,您建议我如何重构此代码,以便消息状态返回一个交替对象数组,例如:

  • 我的功能有问题,它使用作为进行搜索,但数据库中没有 我有一个错误: Illumb\Database\QueryException(42S22)SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“courses.id”(SQL:select*fromwhereid=cmpe102 limit 1)