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

等待状态更新useState钩子

祝宾白
2023-03-14

我有一个对象的状态数组:const[对象,setObject]=useState([]);

我有一个添加按钮,用于将对象添加到数组中,这是onclick事件的主体:

setObjects([…objects,{id:20,property1:value1}])

我有一个移除按钮,用于从数组中移除对象,这是onclick事件的主体:

const newObjects=objects.filter(对象=

现在,如果对象从状态中移除,我想对更新的状态做些什么。

问题是我必须等到状态更新,我不想听到每一个状态的变化,只有当某些东西被删除时。

这就是我到目前为止所做的:

useffect()=

但是如果一个对象被添加到状态中,这也会触发。

简而言之:当对象从对象数组中删除并且状态完成更新时,我想做一些事情

我想用钩子做这个。

提前感谢!


共有1个答案

牟稳
2023-03-14

您可以编写自己的钩子或添加一些其他变量,这些变量将保持数组的长度,并可用于检查元素是否被删除或添加。

const [len, setLen] = useState(0);

useEffect(() => {
  if (objects.length < len) {
    // Your code
  }

  setLen(objects.length);
}, [objects.length]);
 类似资料:
  • 我正在React中使用useState钩子,状态将不会在

  • 问题内容: 我发现React Hooks文档的这两部分有些令人困惑。使用状态挂钩更新状态对象的最佳实践是哪一种? 想象一下要进行以下状态更新: 选项1 从使用React Hook的文章中,我们可以做到: 所以我可以做: 然后: 选项2 从钩子参考中我们可以得出: 与类组件中的setState方法不同,useState不会自动合并更新对象。您可以通过将函数更新程序形式与对象传播语法结合使用来复制此行

  • 我正在构建一个制表符视图,我不明白为什么useState钩子没有更新我的状态。我肯定这是件容易的事,但我在这里已经被难住了一段时间... 我可以看到onPress函数已启动,如果我注销,则item.label是正确的。但是,即使我硬编码参数,setState也不会更改。

  • 我发现这两个反应钩文档有点混乱。使用状态钩子更新状态对象的最佳实践是哪一个? 假设一个用户希望进行以下状态更新: 选择1 从使用React Hook一文中,我们可以看出这是可能的: 所以我可以做: 然后呢: 选择2 从Hooks参考中我们得到: 与类组件中的setState方法不同,useState不会自动合并更新对象。通过将函数更新程序窗体与对象扩展语法相结合,可以复制此行为: 据我所知,两者都

  • 在基于类的React组件中,我们可以使用setState的函数形式定义处理函数,例如: 其中,两个参数表示传递给此组件的先前状态和更新的道具。 类似地,我们有一个函数形式,使用useState钩子在函数组件中设置状态,如下所示: 但正如我们所看到的,useState钩子中的函数形式缺少表示更新的道具的第二个参数 这是React开发团队故意留下的吗?在useState钩子中设置状态时,我们如何访问更

  • 我正在尝试使用注册功能组件中的useState更新组件的状态。当用户输入无效的电子邮件地址并单击“提交”按钮时,以下代码将返回错误消息 我想用这段代码将错误消息设置为formData。 如何将错误消息设置为formData? 这是我的密码: