我正在导出与Redux连接的组件,但是它不起作用,我不知道为什么

时间:2019-04-14 21:11:42

标签: reactjs redux react-redux

我用简单的reducer创建了一个简单的商店。然后我有store = createStore(rootReducer)。一切都非常简单。现在,我只想像这样连接该组件。

import React from 'react';
import { connect } from 'react-redux';

import Text from './Text';

const User = ({ name, surname }) => (
  <div className='user'>
    <Text name={name} surname={surname} />
  </div>
);

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

const Connected = connect(mapStateToProps)(User);
export default Connected;

但是我不断收到错误消息:

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

我真的不知道我在做什么错。唯一的事情是父组件就是这样

<Parent>{this.props.children}</Parent>

孩子将是我连接的组成部分。这里没什么错或新的,但是让我发疯,有什么主意吗? 我更新为React:16.8和React-redux 7.0

谢谢

编辑:如果我在没有连接的情况下导出组件,事情就会变得更奇怪

export default Titles

然后它起作用了!!我不知道我做错了什么。

如果我仅导出export default User之类的组件,它将起作用,并且如果我输入了typeof User,我将获得功能。 如果我使用connect Connected = connect()(User)导出,则失败,Connected的类型为Symbol.react.memo 我知道有些愚蠢的东西,但这确实让我发疯。请帮忙! :D

编辑: 好的,仍然疯狂xD我看到用connect()(Comp)导出的组件不起作用,但是如果我使用Connected = connect()(Comp),然后在JSX中,它就可以工作!我在做什么错了?

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案,并希望与遇到相同问题的所有人分享。 如果要使用redux并使用connect()(Comp)导出组件,则必须注意,最新版本的redux connect使用React.memo和Hooks,因此必须更新所有依赖项。

我的问题是我使用的是旧版本的react-dom和react(不是很旧的tbh),我删除了node文件夹并将所有依赖项更新为最新版本,现在它可以正常工作。

如果您想了解技术原因:

新连接返回对象$$ typeof:React.memo,旧版本不支持。由于这篇帖子in github,我找到了解决方案。