mapStateToProps () в connect () должен возвращать простой объект, вместо этого получил Undefined - PullRequest
0 голосов
/ 01 октября 2018

Я реализовал избыточность для завершения приложения TODO.

Мой код Todo

 import { connect } from "react-redux";

import TodoList from "../components/TodoList.js";

// Here we will connect 

const mapStateToProps = state => {
    todos: state.todos
}

const mapDispatchToProps = dispatch => {
    toggleTodo: id => dispatch({ type: 'TOGGLE_TODOS', id })


}


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

// Редуктор

 const todos = (state = [], action) => {
    switch (action.type) {
        case 'ADD_TODO':
            return [
                ...state, {
                    id: action.id,
                    text: action.text,
                    visibility: false
                }
            ]
        case 'TOGGLE-TODO':
            return state.map(todo => (todo.id === action.id)
                ?
                { ...todo, completed: !todo.completed }
                : todo)
        default:
            return state;
    }

}

export default todos;

В конце я получаю ошибкутак как 'mapStateToProps должен получить простой объект, вместо этого получил Undefined'.

, пожалуйста, дайте мне знать, как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

У вас есть синтаксическая ошибка.Вы должны заключить свой код в скобки.

const mapStateToProps = state => ({
    todos: state.todos
})

Это коротко:

const mapStateToProps = state => ( { } ) // This returns an empty object
0 голосов
/ 01 октября 2018

Вам нужно вернуть объект, вы можете сделать это так, смотрите скобки вокруг объекта.

const mapStateToProps = state => ({
    todos: state.todos
})

Вы также можете сделать

const mapStateToProps = state => { 
    return { todos: state.todos }; 
};

Оба возвращают объект.

...