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

React useState在第一次点击时不更新[重复]

咸星波
2023-03-14

为什么第一次点击时状态没有改变?

const [building, setBuilding] = useState(0);
<Button 
     title="tester"
          onPress={() => {
            setBuilding(1);
            console.log(Building);
          }}/>

控制台日志总是在第一次单击时返回“0”,而不是预期的“1”。我该怎么解决这个问题?

共有1个答案

宋育
2023-03-14

由于状态更新是异步的,您可能会看到您的状态值通过将构建添加到使用效果依赖项而更新,因此每当构建值更改时,它都会触发。

const [building, setBuilding] = useState(0);

  useEffect(() => {
    console.log(building);
  }, [building]);

  return (
    <button
      title="tester"
      onClick={() => {
        setBuilding(1);
      }}
    >
      test
    </button>
  );
 类似资料:
  • 我正在尝试在React中构建我的第一个计算器。我的纽扣似乎有问题(我想)。在测试s时,我发现我第一次点击添加按钮不会更新所有setState。相反,第二次单击会正确更新它。 知道它为什么不起作用吗? 我有一个名为“DaInserting”的div,当用户点击任何数字键时会更新,然后当用户点击加法/减法/等时,应该更新,但它没有。它在第二次点击时更新:-检查。 当用户点击加法/减法后,DaInser

  • 我的代码生成一个输入字段,允许用户输入要搜索的值。然后当他们单击提交按钮时,它会使displayMap为true,因此当MapDisplay组件呈现时,它将通过Map组件触发API搜索并返回随后显示在地图上的值。 问题是这个过程只工作一次。当我再次单击该按钮时,它确实做了一些事情,我确认它正在输入框中获取新值,但我似乎不知道如何再次渲染地图。 我尝试在this.setState中设置其他变量,试图

  • 好的,所以我要试着解释一下,我在一个包含我的蓝贝和所有构造函数的类中创建了一个射击方法,问题是当我按下空间时,它会不断地射击,而我不会再按下它,如果我按下它两倍的速度,它会以两倍的速度发射,并且它开始在我的网格上包含多个x和y位置我只希望法术在发射时发射,我只需要一个项目,因为我不想在网格上有多个它的实例我希望它是玩家在法术离开网格之前不能发射,这是我的代码,谢谢我只有它调用我的密钥释放看到它应该

  • 问题内容: 我正在开发我的第一个android计算器应用程序。我陷入一个单一的缺陷。我添加了几个按钮,然后单击这些按钮,它将把各自的文本放在“ 字段”上。主要问题描述如下:在运行项目时,必须单击两次按钮才能将相应的文本首次放置在字段上。例如,单击时将“ 1”放在字段上。在运行时,首先单击该按钮无效。仅在第二次单击时,它将“ 1”放在字段上。 该守则如下: XML按钮和EditField, Main

  • 我正在制作井字游戏应用程序,第一次点击按钮后,它会得到“O”或“X”文本,我想避免第二次点击,就像我想让它免受第二次点击一样 到目前为止,我得到了这个,

  • 问题内容: 储存程序 在此存储过程中,我有两个update语句。如果第一次更新成功执行,然后第二次执行。需要进行哪些更改? 问题答案: 在第一个之后,您可以检查受影响的行数。 如果返回的结果是所需的更新数量(可能> 0),则仅触发第二个。 可以通过检查受影响的行数来包围第二个。