我有一个react表单,我必须在其中放入一个逻辑,如果startdate〉endate,它应该将startdate恢复为当前日期。我正在将表单值添加到useState数组对象中。初始数组对象看起来像这样-
num:"12345"
startdate: "06/14/2023"
enddate: "06/01/2023"
我已经进行了验证检查,一旦它发现startdate〉enddate,它应该将startdate的值更改为当前日期。
const [form, setForm] = useState({})
const revertStartDate = (field) => {
if (field == 'enddate') {
setForm((prev) => {
prev.startdate = new Date().toISOString() // using internal day calculator
return {...prev}
}
)
}
}
上面的代码将表单更改为下面的形式:
num:"12345"
startdate: "04/19/2023"
enddate: "06/01/2023"
但它并没有反映在用户界面上。用户界面仍然显示06/14/2023的开始日期。我已经阅读了其他答案,它没有改变状态,即使值正在改变。
对于如何重新呈现开始日期的表单,有什么建议吗?
2条答案
按热度按时间beq87vna1#
我不能评论,由于低贡献,但它会是有益的,如果你也提供代码片段到您的
<input>
。您可能需要阅读以下文档:用状态变量控制输入
如果无论如何都需要状态,那么受控输入是有意义的-例如,在每次编辑时重新呈现UI。
fykwrbwg2#
我认为你不能直接改变状态。如果你想确保阅读这篇文档。
在我看来,像这样更新状态不会触发重新渲染。
你想直接更新这个吗?使用immer!