我的useState Hook有点问题。我只想更改“答案”。

const [questions, setQuestions] = useState({
    question1: { answer: "1", isCorrect: false },
    question2: { answer: "1", isCorrect: false },
    question3: { answer: "1", isCorrect: false },
    question4: { answer: "1", isCorrect: false }
  });
const onChange = e => {
    setQuestions({
      ...questions,
      [e.target.name]: { answer: e.target.value }
    });
  };

此功能有效,但是isCorrect消失了。

我知道我可以使用[e.target.name]: { answer: e.target.value, isCorrect: false}但是我想要一个以前的状态。 ...isCorrect不起作用。它应该很容易,但是我找不到这种爱。我希望有人可以帮助我。

最佳答案

您还需要对嵌套值使用扩展语法,并覆盖答案键

const onChange = e => {
    setQuestions({
      ...questions,
      [e.target.name]: { ...questions[e.target.name], answer: e.target.value }
    });
  };

09-19 02:28