React 使用另一个对象数组中的值更新对象数组

问题描述 投票:0回答:1

在我的项目中,我使用一个文本框,用户可以在其中粘贴包含一组问题和答案的文本。我需要将输入拆分为数组中的每一行,并将一个对象添加到带有索引和该行内容的 setState 数组中。

setState 中的对象数组为

const [question, setQuestion] = React.useState([{quin:0,content:'',examid:''}])

将文本粘贴到文本框中后

function changeText(e){
      let v = e.target.value;
      let ar = v.split('\n');
      let qu = [{quin:0,content:'',examid:''}];
      
      //console.log(ar)
      ar.forEach((element,index) => {
        
          qu.push([...qu,{quin:index,content:element,examid:'ABCD'}])            
        
      });

      setQuestion(qu);
      console.log('q: ' + JSON.stringify(question))
      
  }
javascript reactjs arrays setstate
1个回答
0
投票
  1. 删除了
    qu
    与单个对象的初始化。不需要它,因为我们已经将对象推入循环内。
  2. 简化了循环内的
    push
    ,直接推送对象
    { quin: index, content: element, examid: 'ABCD' }
    ,而不是分散现有的
    qu
    数组。 这是更正后的版本:
function changeText(e) {
  let v = e.target.value;
  let ar = v.split('\n');
  let qu = [];

  ar.forEach((element, index) => {
    qu.push({ quin: index, content: element, examid: 'ABCD' });
  });

  setQuestion(qu);
}

这应该使用对象数组正确更新状态,其中每个对象代表从文本框中的文本中提取的问题。

© www.soinside.com 2019 - 2024. All rights reserved.