【问题标题】:Redux store does not have a valid reducer when using export default store使用导出默认存储时,Redux 存储没有有效的减速器
【发布时间】:2021-07-29 17:15:30
【问题描述】:

第一次使用带有 react 的 redux。

边缘浏览器出错。

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

我搜索了很多这样的帖子。 Redux store does not have a valid 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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我正在做一门课程和当前的视频,代码是一样的。我将做下一个视频,看看如何填充它。我认为你是对的,我的朋友。
    • 有效!你完全正确。它在下一个课程视频中填充,教授用 productList 填充了这个参数,现在工作正常!
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2018-10-02
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多