我正在尝试从状态中提取数据。我正在使用redux。
const {currentPost } = useSelector(state => state.posts)
我希望得到一个带有属性的对象。相反,我得到几个未定义的对象,然后得到一个对象。
这些未定义的内容使我无法像const {currentPost: {id} } = useSelector(state => state.posts)
那样进一步分解,并返回无法读取undefined属性的错误。
这些帖子是通过API获得的。
我尝试通过使用一个函数来解决此问题,该函数检查此currentPost
是否未定义,然后将null传递给这些属性。但是,它不适用于项目,并且此解决方案容易出错。
答案 0 :(得分:1)
随着我获得更多的经验,我想与未来的年轻前端开发人员分享我的知识
我正在使用redux-toolkit
https://redux-toolkit.js.org/
这些未定义的值来自异步操作,因此它们的行为有时会在诺言完成之前返回未定义的值。
要克服它并编写稳定的代码,需要添加默认值。在redux-toolkit中,您可以使用
const slice = createSlice({
name: 'posts',
initialState: {
currentPosts: {
value: {
name: ''
}
},
posts: []
},
reducers: {
...reducers
},
})
在这种情况下,您将获得Object currentPosts,它不是未定义的。