React中useState初始值设为空数组,调用set传对象会得到什么结果?
结论
relatedPosts会直接被替换为object1本身,React不会强制保留初始值的数组类型,也不会自动把传入的对象包裹成数组。
原因说明
useState的初始值仅在组件第一次渲染时生效,仅用来给状态设置初始值,不会对后续的状态更新做任何类型限制。调用状态更新函数setRelatedPosts时,你传入什么值,状态就会被直接覆盖为对应的值,不会做任何隐式转换。
正确写法参考
如果你期望得到包含object1的数组,可以按需求选择写法:
- 直接把状态替换为仅包含
object1的新数组:setRelatedPosts([object1]) - 在原有数组的基础上追加
object1,保留之前的数组内容:setRelatedPosts(prevState => [...prevState, object1])
额外注意
你给出的object1定义存在语法错误,对象的键值对需要用冒号分隔,正确写法为:
const object1 = {name: "David", id: 5};
内容的提问来源于stack exchange,提问作者Mentor_Aliu
相关产品推荐
相关产品推荐

