在我的项目中,我使用一个文本框,用户可以在其中粘贴包含一组问题和答案的文本。我需要将输入拆分为数组中的每一行,并将一个对象添加到带有索引和该行内容的 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))
}
qu
与单个对象的初始化。不需要它,因为我们已经将对象推入循环内。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);
}
这应该使用对象数组正确更新状态,其中每个对象代表从文本框中的文本中提取的问题。