【问题标题】:useSelector state returns undefined (React-Redux)useSelector 状态返回 undefined (React-Redux)
【发布时间】:2020-12-28 17:02:09
【问题描述】:

我通过控制台记录有效负载检查了我的操作、reducers,并且我按预期从我的 api 获取数据,但是当我想使用 useSelector 挂钩使用我的状态值时,我遇到了问题。

这是我的 Post 组件,我想在其中使用来自 postsReducer 减速器的帖子状态。 (下方)

import React from "react";
import { useSelector } from "react-redux";

function Post() {

    const posts = useSelector((state) => state.postsReducer);
    console.log(posts); //undefined

    return (
        <>
            This is a single post
        </>
    );
}

这是我的 App 组件,我在其中调度了我的 fetch 操作以从 api 获取数据。 (下方)

动作(下方)

减速机。 (下方)

所有 API 调用都运行良好。
只有useSelector 让我头疼!

【问题讨论】:

  • useSelector的回调函数中,可以试试console.log(state.postsReducer)吗?
  • 您是否将组件包装到 Provider (react-redux.js.org/api/hooks#using-hooks-in-a-react-redux-app)?你的状态真的改变了吗(因为默认状态是未定义的)。您可以使用chrome.google.com/webstore/detail/redux-devtools/… 查看状态变化。
  • 我们能看到根减速器的形状吗?检查useSelector(state =&gt; state)时看到了什么?
  • @dev1ce 如果您发布代码而不是图像会很有帮助。
  • 请查看 StackOverflow.com/help 上的 SO 帮助中心。所有代码、数据、错误消息等都必须以文本形式输入。图像在移动设备上不可读。此外,文本图片不能发布到代码编辑器或搜索引擎中,因此任何人都能够有效地提供帮助的过程变得复杂。它还增加了志愿者将自己的错别字添加到您的代码示例中的风险。请务必始终包含一个功能齐全、可重现的示例来展示您的问题。您可以编辑您的帖子以避免关闭,或者在它关闭时重新打开它。

标签: javascript reactjs redux react-redux


【解决方案1】:

最后我解决了这个问题,这很奇怪,但我什么也没做,我做了什么,我在 reducers 文件夹中创建了一个 index.js 文件,用于合并所有 reducer 文件(在这种情况下我只有一个,但仍然存在)和然后导出它并且它起作用了!

import { combineReducers } from "redux";
import { postsReducer } from "./posts";

const allReducers = combineReducers({postsReducer});

export default allReducers;

【讨论】:

    【解决方案2】:

    在某些情况下,拼写错误也会导致相同的错误。例如,您的 reducer 可能是 postReducer,但您以 postsReducer 的形式访问它

    const posts = useSelector((state) => state.postsReducer);
        console.log(posts); //undefined
    

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 1970-01-01
      • 2016-11-20
      • 2022-01-01
      • 2020-08-26
      • 2021-12-09
      • 2017-08-18
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多