为了账号安全,请及时绑定邮箱和手机立即绑定

单击“保存”时状态未更新

单击“保存”时状态未更新

慕仙森 2021-11-18 17:00:22
在 Material-UI 制作的 TransferList 组件中设置一堆项目后,当我按“保存”时,我试图更新状态。问题是,当我单击“保存”时,它不会更新。如果我再次单击或与组件进行任何交互,它就会更新。我在 Code SandBox 上创建了一个代码,所以你不必弄清楚我在说什么。代码已经在运行,我在下面列出了一个包含九个项目的列表,准确地解释了我的问题是什么。这是链接:https : //codesandbox.io/s/question-about-hook-state-f3jtl我怀疑 useEffect 可能是解决方案。当我点击“保存”以避免性能问题时,我无法找到如何触发它。你可能会问“为什么你要更新“正确”的状态,然后才努力更新“data.items”?为什么不更新“data.items”。好吧,Material-UI 代码很受约束,而且似乎在改变它可怕的。
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您的代码运行良好,但如果您想在事件中打印正确的状态,请将其更改为:


 const handleClick = () => {

    setData(prevState => {

      let newState = { ...prevState, items: right };

      console.log("handleClick", newState);


      return newState;

    });


    //  console.log("handleClick", data);

    //  console.log("right", right);

  };

与类组件中的 setState 方法不同,useState 不会自动合并更新对象。您可以通过组合函数更新程序来复制此行为。


这里固定的例子:https : //codesandbox.io/s/question-about-hook-state-sb0jo


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信