Recibí un error en mi proyecto react y redux. y no encontré cómo resolverlo.

Este es un mensaje de error:

The previous state received by the reducer has unexpected type of "Function". Expected argument to be an object with the following keys: "posts", "sidebar"

mensaje de error

Códigos:

Store.js:

import { createStore, applyMiddleware } from 'redux'
import logger from 'redux-logger'
import thunk from 'redux-thunk'

import reducers from '../reducers/index'

const middleware = process.env.NODE_ENV === 'production' ? [ thunk ] : [ thunk, logger() ]

const store = createStore(reducers, applyMiddleware(...middleware),  window.devToolsExtension ? window.devToolsExtension() : f => f)

export default store

Reductoras / index.js:

import { combineReducers } from 'redux'
import posts from './posts'
import sidebar from './sidebar'

const rootReducer = combineReducers({
    posts,
    sidebar
})

export default rootReducer

Reductoras / posts.js:

import {
    RECEIVE_POSTS,
    RECEIVEING_POSTS
} from '../containers/index'

const initialState = {
    posts: [],
    post: {},
    message: 'done'
}

const post = (state = initialState, action) => {
    switch (action.type) {
        case RECEIVE_POSTS:
            return Object.assign({}, state, {
                posts: action.posts
            })
            break
        case RECEIVEING_POSTS:
            return Object.assign({}, state, {
                message: 'loading'
            })
        default:
            return state
    }
}

export default post

Reductoras / barra lateral.js

import {
    TOGGLE_SIDEBAR
} from '../containers/index'

const initialState = {
    show: true
}

const sidebar = (state = initialState, action) => {
    switch (action.type) {
        case TOGGLE_SIDEBAR:
            return Object.assign({}, state, {
                show: ! state.show
            })
            break
        default:
            return state
    }
}

export default sidebar

Leí el ejemplo de redux pero no sé qué tiene de malo mi código. Simplemente arroja Error.

Esos códigos son muy parecidos al ejemplo redux !!!

Gracias por su paciencia.

2
AnnatarHe 13 may. 2016 a las 14:57

3 respuestas

La mejor respuesta

Este es el viejo que solía funcionar:

const store = createStore(reducers, applyMiddleware(...middleware),  window.devToolsExtension ? window.devToolsExtension() : f => f)

Ahora tienes que convertirlo a:

const store = redux.createStore(
    rootReducer,
    initialState,
    redux.compose(
        redux.applyMiddleware(...middleware),
        window.devToolsExtension ? window.devToolsExtension() : f => f
    )
);
1
Amio.io 24 jul. 2016 a las 09:46

El error se produce porque las claves de su objeto de estado deben coincidir con las del objeto que pasó a combineReducers. Consulte este documento para obtener más detalles combineReducers

0
Eni Arinde 13 may. 2016 a las 12:19

Yo sé eso...

Los parámetros que segundo en createStore son initialState, no middleware ..

1
AnnatarHe 14 may. 2016 a las 10:36