首页 > 解决方案 > 使用导出默认存储时,Redux 存储没有有效的减速器

问题描述

第一次使用带有反应的 redux。

边缘浏览器出错。

“Store 没有有效的减速器。确保传递给 combineReducers 的参数是一个其值为减速器的对象。”

我搜索了很多这样的帖子。 Redux 商店没有有效的 reducer

但我还没有找到任何关于这个相同问题的信息:

store.js

    import { createStore, combineReducers, applyMiddleware } from 'redux';
    import thunk from 'redux-thunk'
    import { composeWithDevTools } from 'redux-devtools-extension'
    
    const reducer = combineReducers({})
  
    const initialState = {}
     
    const middleware = [thunk]
    
    const store = createStore(reducer, initialState,
          composeWithDevTools(applyMiddleware(...middleware)))
    
    export default store

index.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    import { Provider } from 'react-redux'
    import store from './store'
    import './index.css';
    import './bootstrap.min.css'
    import App from './App';
    import reportWebVitals from './reportWebVitals';
    
    ReactDOM.render(
      <Provider store={store}>
        <App />
      </Provider>,
      document.getElementById('root')
    );
    
    // If you want to start measuring performance in your app, pass a function
    // to log results (for example: reportWebVitals(console.log))
    // or send to an analytics endpoint. Learn more.
    reportWebVitals();

编辑 (下面朋友提到的解决方案):

store.js 添加到文件 store.js 的编辑信息

import { productListReducer } from './reducers/productReducers';

const reducer = combineReducers({
    productList: productListReducer,
})

productReducer.js

教授添加了一个名为 /reducers/productReducer.js 的文件

export const productListReducer = (state = { products: [] }, action ) => {
    switch(action.type) {
        case 'PRODUCT_LIST_REQUEST':
            return {loading:true, products:[]};
        case 'PRODUCT_LIST_SUCCESS':            
            return {loading:false, products:action.payload};
        case 'PRODUCT_LIST_FAIL':
            return {loading:false, error:action.payload};
        default:
            return state
    }
}

标签: redux

解决方案


问题是您没有传递任何要由“combineReducers”组合的减速器。Sice 你没有传递任何减速器,没有人听这些动作。

前任: import myReducer from './reducers' const reducer = combineReducer( { myReducer:myReducer })

然后您可以将其传递给您的商店。


推荐阅读