首页 > 解决方案 > 将 useState 与对象数组反应

问题描述

所以我有 3 个输入,我想在更新 onChange 输入属性时获取它们的状态,我想要获取的状态应该是这样的:[{lang: (inputName), text: (inputValue)}, ..].

我尝试了什么:

function onChange = (name, value) => {
  setState(prevState => [...prevState, {lang: name, text: value} ])
}

我认为解决方案是过滤prevState,因为只有 3 个输入,我可以根据name键过滤数组。并仅显示具有真正密钥的对象(不重复的对象)。

标签: javascriptarraysreactjsstate

解决方案


很难从您的问题中分辨出来,但我认为您要问的是如何更新数组内对象的“文本”值?

如果是这样,您可以执行以下操作:

function onChange = (name, value) => {
  setState(prevState => {
    let stateCopy = [...prevState];
    const index = stateCopy.findIndex(obj => obj.lang === name);
    stateCopy[index] = {...stateCopy[index], text: value};
    return stateCopy;
  }
}

推荐阅读