React Hooks 更新字典状态

Cod*_*cks 4 javascript reactjs

我有一个状态应该是像这样的字典:

[personInfo, setPersonInfo] = useState({"firstName": "", "lastName": ""});
Run Code Online (Sandbox Code Playgroud)

我想像这样更新这个状态:

setPersonInfo(prevPersonInfo => prevPersonInfo["firstName"] = "name")
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。

请不要建议我为名字和姓氏存储两个单独的状态。对于我的特定用例,我有必要使用字典。

Ale*_*ied 12

我的猜测是它不起作用,因为您正在更改同一个对象,而不是返回一个新对象。我建议以扩展到新对象的方式重写它

setPersonInfo(prevPersonInfo => ({...prevPersonInfo, firstName: "name"}))
Run Code Online (Sandbox Code Playgroud)

顺便说一句,根据您的对象的复杂程度,您可能需要考虑useReducer.