首页 > 解决方案 > 改变部分状态

问题描述

我的 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不起作用。这应该很容易,但我找不到解决办法。我希望有人可以帮助我。

标签: javascriptreactjs

解决方案


spread原始对象并覆盖answer

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

推荐阅读