@livd98

Почему не приходят данные в combineReducers?

Есть редьюсер, если создать через него storage то всё работает нормально
Потом понадобился еще один редьюсер и я запихнул их в комбайнредьюсер и теперь ошибка "todos.map is not a function"
Ошибка так полагаю где то в файле с комбайном, помогите
index.js
import React from 'react'
import { render } from 'react-dom'

import { Provider } from 'react-redux'
import { createStore } from 'redux'
import App from './components/App'
import reducer from './reducers'

const store = createStore(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')

reducers/index.js
import { combineReducers } from 'redux'
import addTodo from './addTodo'

const reducer = combineReducers({
  addTodo,
})

export default reducer

reducers/addTodo.js - файл от которого раньше создавался storage и отрисовывались данные
const initialState = []

 const addTodo = (state = initialState, action) => {
  switch (action.type) {
    case 'ADD_TODO':
      return  [
        ...state,
        {
          id: action.id,
          text: action.text,
          completed: false
        }
      ]
    case 'REMOVE_TODO':
      return state.filter(todo =>
        todo.id !== action.id
      )
    case 'TOGGLE_TODO':
      return state.map(todo =>
        (todo.id === action.id) 
          ? {...todo, completed: !todo.completed}
          : todo
      )
    case 'RENAME_TODO':
      return state.map(todo =>
        (todo.id === action.id) 
        ? {...todo, text: action.text}
        : todo
      )
    default:
      return state
  }
}

export default addTodo

components/TodoList.js - отрисовка
import Todo from './Todo'
import {connect} from 'react-redux'

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

const TodoList = ({ todos, }) => {
  return(
    <ul>
      {todos.map(todo => (
        <Todo key={todo.id} todo={todo}/>
      ))}
    </ul>
  )
}

export default connect(mapStateToProps)(TodoList)
  • Вопрос задан
  • 22 просмотра
Решения вопроса 1
mmmaaak
@mmmaaak
В mapStateToProps маппишь весь стейт в todo, а Стейт с тудухами лежит в state.addTodo, соответствуя тому, какое имя поля было в объекте, который ты передал в combineReducers
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы