React函数组件中setState给对象类型state赋值不生效问题求助
问题原因
React 中的状态更新方法(例如setCurrentProperty)是异步批量执行的,调用更新方法后,当前函数闭包内的状态还是本次渲染周期的旧值,不会立即发生改变,因此你在setCurrentProperty之后直接打印currentProperty,拿到的永远是更新前的空对象,并不是赋值没有生效。
验证状态是否更新的方法
你可以通过useEffect监听currentProperty的变化,确认赋值是否成功:
useEffect(() => { // 当currentProperty变化时会触发此回调,打印的是更新后的值 console.log('更新后的currentProperty:', currentProperty) }, [currentProperty])
代码优化建议
你遍历查找匹配id对象的逻辑可以简化,不用手写for循环:
function handleEditingMortagePaymentOpen(id){ setCurrentlyEditingMortgagePayments(true) setSelectedPropertyById(id) const targetProperty = properties.find(item => item.id == id) if(targetProperty) { setCurrentProperty(targetProperty) } }
内容的提问来源于stack exchange,提问作者omar jandali
相关产品推荐
相关产品推荐

