1

Redux newbie here.

I have an reducer ProductListReducer that takes asynchronous action (its action creator fetch data from API), whose initial state is InitialProductListStates. I have another synchronous reducer CartReducer, whose initial state is InitialCartListStates. I want to have them work on one single store store. How should I do this?

My attempt: I want to first combine the two reducers into one reducer with combineReducers, and then combine their initial states as InitialState = {ProductListReducer: InitialProductListStates, CartReducer:InitialCartListStates}. Next, I want to use createStore(): store = createStore(reducer, InitialState , applyMiddleware(thunk));

However, I am stuck at the first test-of-concept: After combining ProductListReducer with itself and setting InitialState={ProductListReducer: InitialProductListStates} , I re-run the app and get this error:

Uncaught Error: Minified Redux error #12; visit https://redux.js.org/Errors?code=12 for the full message or use the non-minified dev environment for full errors. 
    at redux.js:441:13
    at Array.forEach (<anonymous>)
    at redux.js:434:25
    at _l.ProductListReducer (redux.js:499:5)
    at main.ts:4:17
    at index.tsx:13:27
    at index.tsx:13:27

My codes (that doesn't work):

import reducer from './reducers/main';

import { ProductListReducer, InitialProductListStates } from './reducers/reducers'

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

const InitialStates = {
    ProductListReducer: InitialProductListStates
};

export const store = createStore(reducer, InitialStates, applyMiddleware(thunk));

My code (that did work):

import reducer from './reducers/main';

import { ProductListReducer, InitialProductListStates } from './reducers/reducers'

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

const InitialStates = {
    ProductListReducer: InitialProductListStates
};

export const store = createStore(ProductListReducer, InitialProductListStates, applyMiddleware(thunk));
Darius Huang
  • 13
  • 1
  • 2

0 Answers0