Я экспортирую компонент, связанный с Redux, но он не работает, я понятия не имею, почему - PullRequest
1 голос
/ 15 апреля 2019

Я создал простой магазин с простым редуктором.Тогда у меня есть 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 Iсделать это работает!Что ... я не так делаю?

1 Ответ

1 голос
/ 15 апреля 2019

ОК. Я нашел решение и хочу поделиться им со всеми, кто сталкивался с такой же проблемой. Если вы используете redux и экспортируете свой компонент с помощью connect () (Comp), вы должны знать, что в последней версии redux connect используются React.memo и Hooks, поэтому вы должны обновить все свои зависимости.

Моя проблема заключалась в том, что я использовал старую версию response-dom и реагировать (не очень старый tbh), я удалил папку узла и обновил все зависимости до последней версии, и теперь она работает нормально.

Если вы хотите узнать техническую причину:

Новое соединение возвращает объект $$ typeof: React.memo, который не поддерживается в старой версии. Я нашел решение благодаря этому сообщению в github .

...