繁体   English   中英

反应,我如何只更新使用 useState 钩子的 object 中的一个属性?

[英]React, how do I update just one property in an object that uses the useState hook?

在我的代码中,我目前有一个 state ,如下所示:

const [caclulatorObj, setCalculatorObj] = useState({
  total: '0',
  next: null,
  operator: null
});

function clickHandler(isOperator, value) {
  setCalculatorObj(calculate(caclulatorObj, value));
}

如上所述,计算 function 返回 object。 我的问题是,在更新 state 时,我是否总是必须设置完整的 object? 例如,在我calculate function 时,我可能只更新next变量:

return {
  total: calculatorObj.total,
  next: someNewValue,
  operator: calculatorObj.operator
}

我可以直接退货吗?:

return { next: someNewValue };

还是我总是需要退回完整的 object?

您需要像这样设置 state:

function clickHandler(isOperator, key, value) {
  setCalculatorObj(calculate(caclulatorObj, { ...calculatorObj, [key]: value}));
}

当您调用它时,传递您要修改的密钥:

onClick={(e) => clickHandler(false, 'next', e.target.value )}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM