无法从mapStateToProps获取道具

时间:2018-08-01 00:17:06

标签: reactjs react-redux

通过阅读Redux教程和Redux的一些新知识。我正在尝试访问Redux Store中的当前状态。我可以在开发工具的Redux State中看到状态对象及其数据,但是当我连接mapStateToProps时,状态返回未定义。

export class VersionDiff extends Component {
  render() {
    const { diffs } = this.props;
    console.log(diffs, 'im the diffs');
    return (
      <div>
        Empty Div
      </div>
    );
  }
}

const mapStateToProps = state => {
  return {
    diffs: state.diffs,
  };
};

export default connect(mapStateToProps)(VersionDiff);

当我认为我可以通过render方法访问this.props上redux存储中的项目时,render方法中的控制台日志返回undefined。这是我下面的减速器。

export default (state = [], action) => {
  switch (action.type) {
    case 'SET_DIFFS':
      return [...state, action.diffs];
    default:
      return state;
  }
};

当我查看Redux devtools时,可以看到要从商店中提取的diffs对象。我确定这很简单,但似乎无法访问。 enter image description here

1 个答案:

答案 0 :(得分:0)

我想尝试提供更多的清晰度,以防将来对任何人有帮助。我相信这里发生的事情是因为我在模块底部的connect函数中将模块导出为默认模块,因此我将能够使用标准的导入语法。我相信我正在尝试将我的VersionDiff模块作为命名导入导入,因此如下所示。

import { VersionDiff } from '../components/VersionDiff;

这是行不通的,因为我无法访问我的组件,因为它是默认导出,因此我的道具将无法传递到我的组件中,因为该组件将返回未定义。

我认为这是一个错误,因为我实际上无法在将文件添加到connect函数并尝试从存储中拉出状态之前在文件中找到该组件。

解决方案:

import VersionDiff from '../components/VersionDiff';