【发布时间】:2019-11-25 19:56:45
【问题描述】:
我正在尝试从状态中提取数据。我正在使用 redux。
const {currentPost } = useSelector(state => state.posts)
我希望得到一个具有属性的对象。相反,我得到了几个未定义的,然后我得到了一个对象。
开始时这些未定义导致我无法像const {currentPost: {id} } = useSelector(state => state.posts) 那样进一步解构,并返回无法读取未定义属性的错误。
这些帖子是通过API获取的。
我试图通过使用一个函数来解决这个问题,该函数检查这个currentPost 是否未定义,然后将 null 传递给这些属性。但是它不适合项目,而且这种解决方案容易出错。
【问题讨论】:
-
useSelector(state => state ? state.posts : {})? -
问题是我必须从中获取一些属性才能在组件中创建一些逻辑
-
state.posts是在申请开始后填写的吗?如果它在启动时存在,那么useSelector应该立即返回那里的任何内容。 -
但是创建一个单独的选择器函数并检查 state.posts 是否存在有什么问题?它必须是一个班轮吗?
-
@ArcMech 如果
state.posts.currentPost仅在调用了一些 api 后可用,则需要在 reducer 中使用null(不是undefined)或{}对其进行初始化。在 react 组件中,您需要编写条件来检查currentPost何时可用,然后才能进一步解构并渲染内容。这在 react/redux 应用中很常见。
标签: javascript reactjs redux react-redux