javascript - 如何在孙子组件中设置或更新数组的状态

标签 javascript reactjs react-hooks

我正在尝试从位于父组件中的孙子组件设置数组的状态。

我尝试使用 setNumberOfVar([...varsLines]); 这个方法,但它不会立即更新状态。它更新但退一步。

我的代码


  const removeVar = (e, val) => {
    e.preventDefault();
    var varsLines = numberOfVar;
    varsLines = numberOfVar.filter((item) => {
      return item.postion != val;
    });
    varsLines = varsLines.map((item) => {
      return {
        ...item,
        postion: item.postion > val ? item.postion - 1 : item.postion,
      };
    });
    console.log(varsLines);
    setNumberOfVar([...varsLines]); // <== this line is not updating the state immediately;
    console.log(numberOfVar);
  };

最佳答案

setNumberOfVar() 是一个异步操作,不会立即更新状态。

如果您想在状态更新时获得回调之类的东西,您可以使用在状态更新时运行的 useEffect Hook 。

import {useEffect } from 'react';

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

关于javascript - 如何在孙子组件中设置或更新数组的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70632404/

相关文章:

reactjs - 从功能组件外部获取 React Hook Value

javascript - 检查调查是否在过去 5 分钟内完成

javascript - 处理浏览器 'full screen' 事件时如何访问我的 Angular Controller ?

javascript - 向映射组件传递和接收多个 props

javascript - 为什么在通过 setTimeout 更新状态之前评估三元运算符的不可到达部分?

javascript - 以父组件内对象的形式从所有子组件获取合并数据 : React JS

javascript - 你如何做点符号 react 组件与 react Hook ?

javascript - 需要帮助设置自动完成列表项的最大高度

javascript - js正则表达式从文本字符串中删除某些标签

javascript - React Express 应用程序中的客户端 session 管理