【问题标题】:React state hook 2D array first element is always emptyReact 状态挂钩 2D 数组第一个元素始终为空
【发布时间】:2022-07-04 20:39:37
【问题描述】:

我有一个二维数组,我可以将元素推送到该数组。我遇到的问题是,当我打印内容时,索引 0 处总是有一个空白元素。我不知道这是从哪里来的?

const [array, setArray] = useState([[]]);

// 调用此代码 4 次

const updatedArray = [...array, ['test', 'test2']];
setArray(updatedArray);

【问题讨论】:

  • 您正在使用嵌套数组初始化您的状态,这就是它的来源。该操作从索引 1 开始添加新的数据集。只需 useState([]);

标签: javascript reactjs react-hooks


【解决方案1】:

这里的问题是

...array

因为数组的初始值为 [].

所以array[0] 将等于[] 并且您从array[1] 开始附加新值。

您想要做的是const updatedArray = [['test', 'test2']];,因为您不希望保留初始值。

【讨论】:

    【解决方案2】:

    有时状态会出现此问题。
    如果是钩子,你应该使用useEffect钩子,如下-

    const [fruit, setFruit] = useState('');
    
    useEffect(() => {
      console.log('Fruit', fruit);
    }, [fruit])
    

    这拯救了我的一天,希望也能帮助你!!!

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2021-09-09
      • 2022-06-23
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2020-08-26
      • 2021-03-22
      • 2021-09-07
      相关资源
      最近更新 更多