Json 如何使用useState钩子设置和访问处于React状态的嵌套数组对象的值?

Json 如何使用useState钩子设置和访问处于React状态的嵌套数组对象的值?,json,reactjs,object,state,use-state,Json,Reactjs,Object,State,Use State,这是我的州 const [poll, setPoll] = useState({ pollQuestion: "Sample question- Is it fine?", pollOption: [ { optionId: 1, optionText: "sample option1", votes: "0" }, { optionId: 2, optionText: "sample

这是我的州

const [poll, setPoll] = useState({
    pollQuestion: "Sample question- Is it fine?",
    pollOption: [
      { optionId: 1, optionText: "sample option1", votes: "0" },
      { optionId: 2, optionText: "sample option2", votes: "0" },
      { optionId: 3, optionText: "sample option3", votes: "0" },
      { optionId: 4, optionText: "sample option4", votes: "0" },
    ]
  });
我正在尝试为我的投票设置optionText。 我目前正在使用这个,但这是错误的

onChange={(e) => setPoll({ ...poll, pollOption.optionText: e.target.value })}
有人能纠正我吗

另外,如何设置选项文本框的值

 value={poll.pollOption.optionText}

我尝试了这个方法,但它同时设置了所有4个输入字段的值。

您没有指定错误,但乍一看,PollOption是一个对象数组,因此您必须指定索引才能访问正确的对象

要更改索引为
i
的对象的OptionText,请尝试:

onChange={(e) => setPoll({ ...poll, PollOption[i].OptionText: e.target.value })}
因此,使用
选项id:4更改对象将意味着更改数组中的第四个对象,因此
i=3

onChange={(e) => setPoll({ ...poll, PollOption[3].OptionText: e.target.value })}

对于第一个,您需要更改哪一个?整个选项?这能回答你的问题吗@Veno有4个类似的输入字段用于输入4个选项。我想更改PollOption[]数组中的第一个对象,使其处于用户在第一个选项框中键入时的状态。同样,对于其他3个输入字段,还会有3个onChange函数。如果OP想更改第二个选项,该函数是什么?使用
optionId
4的那一个呢?用一个一般和具体的例子编辑了我的答案。谢谢@wesley.buijsman的回答,但这似乎不适用于useState。我尝试了设置状态的功能性方法,通过传递previousState并返回一个新状态,但它们不起作用。我附加了一个链接,你可以编辑代码的生活和看到