Вы должны передать компонент функции, возвращаемой соединением. Вместо этого получили неопределенные

Приведенный ниже код

Ошибка при сборе: вы должны передать компонент функции, возвращаемой соединением. Вместо этого получили неопределенные

List.js

import React from 'react';
import { connect, bindActionCreators } from 'react-redux';
import PostList from '../components/PostList'; // Component I wish to wrap with actions and state
import postList from '../Actions/PostList' //Action Creator defined by me

const mapStateToProps = (state, ownProps) => {
    return state.postsList
}

const mapDispatchToProps = (dispatch) => {
    return bindActionCreators({"postsList":postList},dispatch)
}

export default connect(mapStateToProps, mapDispatchToProps)(PostList);

PostList.js

import React from 'react'

export const PostList = (props) => {
    return <div>List</div>
}

Пожалуйста, помогите мне с решением?

Ответ 1

Вы import PostList from '../components/PostList'; поэтому вам нужно использовать export default в вашем файле PostList.js.

В противном случае вам нужно import { PostList } from '../components/PostList'; ,

Кому интересно, вот хорошая статья о синтаксисе импорта/экспорта es6: http://www.2ality.com/2014/09/es6-modules-final.html

Ответ 2

Не относится конкретно к спрашивающему, но если вы сталкиваетесь с этой ошибкой, стоит проверить правильность синтаксиса connect():

const PreloadConnect = connect(mapStateToProps, {})(Preload);

export default PreloadConnect;

Обратите внимание, что Preload, передается как параметр IIFE.

Ответ 3

Более подробную информацию можно найти здесь here.

Может быть три причины, которые кратко изложены следующим образом:

  • Круговые зависимости между компонентами
  • Неправильное использование export и export default затем неправильно импортировано
  • Неправильное использование функции подключения, неверные параметры

В моем случае это были циклические зависимости, и циркулярный-зависимый плагин помог мне это исправить.

Ответ 4

В моем случае это был сервер Expo, который иногда не ловит файлы файлов в Windows (возможно), и он видел старую версию компонента, который я пытался подключить (у меня там еще не было экспорта, вероятно). Повторное сохранение моего компонента, не затрагивая ничего, решило проблему.

Перезапуск сервера Expo с очищенным кешем, вероятно, также поможет.