【发布时间】:2019-11-03 00:16:30
【问题描述】:
我有一个带有无线电输入的表单。每次用户选择选项时,如果与用户回答的问题相同,我必须更新包含覆盖旧答案的问题答案的数组。所以我有这个useState
在我看来,这将映射答案的旧值,如果问题的答案已经存在,则映射 Object.assign() 它,否则如果它是对新问题的新答案,则只需返回答案。但它只返回默认数组。如果它像 [{}] 一样初始化,则返回 Array[{}]。如果是[],则返回Array[]
状态是
const [answers, setAnswers] = setState([])
const handleCheckbox = (e, question) => {
const newAnswer = { choice: e.target.id, question: question.uuid };
setAnswers(
[...answers],
answers.map(
answer =>
answer.question === newAnswer.question ?
Object.assign(answer, newAnswer):
newAnswer
)
);
};
预期:answers: [{id: 1}, {id: 2},...] 无需重复已经存在的内容。
实际:Array[]
【问题讨论】:
-
您无法创建具有此形状的数组 [answerQuestion1: {}, answerQuestion2:{},...]。也许更多的代码会帮助我们更好地理解这个问题。非常感谢您提供代码框
标签: javascript reactjs