javascript - 反应功能组件中的 setState 没有被分配具有分配对象的属性
问题描述
我有一个反应功能组件。我有一个称为当前财产的状态。
const [currentProperty, setCurrentProperty] = useState({})
我正在尝试使用 setCurrentProperty 分配一个对象,但它不起作用,统计数据保持为黑色对象。这是当前代码:
function handleEditingMortagePaymentOpen(id){
setCurrentlyEditingMortgagePayments(true)
setSelectedPropertyById(id)
for(let i = 0; i < properties.length; i++){
if(properties[i]['id'] == id){
console.log(properties[i])
setCurrentProperty(properties[i])
console.log(currentProperty)
}
}
}
这就是 console.log 显示的内容
{id: 3, picture: '../images/unnamed.jpeg', price: 464000, status: 'Active', beds: 3, …}
address: "Plan 2 Plan, Neo at Mission Foothils"
agent: "John Doe"
baths: 3
beds: 3
broker: "JD Realty"
days_listed: 29
hoa: 12
home_insurance: 239
id: 3
living_space: 3964
mls: "OC3628342"
picture: "../images/unnamed.jpeg"
price: 464000
property_tax: 68
rent: 2200
sqft: 1939
status: "Active"
[[Prototype]]: Object
{}
解决方案
这与 useState set 方法中提到的相同问题没有立即反映更改
React setState 或 useState 函数不会立即更改您的变量,它是一个异步过程,只会在下一次渲染时设置您的值,
console.log(properties[i])
setCurrentProperty(properties[i])
console.log(currentProperty)
此代码显示不同的日志,因为当前属性尚未使用新属性进行更新,要检查状态变量的更改,您可以在函数之外(在组件返回之前)或在useEffect
useEffect(()=> {
conole.log(currentProperty) // this will console latest value on your every `currentProperty` update
},[currentProperty])
或者您可以在返回 HTML 之前简单地对其进行控制台,或者在 HTML 中,值将在下一次渲染时自动更新
推荐阅读
- svg - Safari/IOS 上的动画 SVG 过滤器不会显示指定的宽度和高度
- sql-server - 使用 REGEXP_EXTRACT 收集数据
- html - 图片超出父级(子 div 超出父级 div)
- class - 类不是静态的,但可以像静态一样访问
- vue.js - 如何让 Nuxt 路由器更有活力?
- hive - 具有相同位置的 Hive 外部分区
- c# - 尽管我正在使用范围日历,但请求的身份验证范围不足
- javascript - ^ 语法错误:意外的标记 '<'
- amazon-s3 - AWS CLI:无法获取颁发者证书
- react-router - 如何将 URI 设置为“/%25”?