Я пытаюсь использовать Redux, Redux-Thunk в моем приложении. Я делал это раньше, и это работало, но здесь он продолжает показывать ошибку: ожидалось, что редуктор будет функцией

И / App.js;

import React, { Component } from 'react'; import { Router } from 'react-router-dom'; import { createBrowserHistory } from 'history'; import { Chart } from 'react-chartjs-2'; import { ThemeProvider } from '@material-ui/styles'; import { chartjs } from './helpers'; import theme from './theme'; import 'react-perfect-scrollbar/dist/css/styles.css'; import './assets/scss/index.scss'; import Routes from './Routes'; import { Provider } from 'react-redux'; // redux import { createStore, applyMiddleware, compose, combineReducers } from 'redux'; import thunk from 'redux-thunk'; import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly'; import * as actionTypes from './store/actions/actionTypes'; import rootReducer from './store/reducers/rootReducer'; const browserHistory = createBrowserHistory(); Chart.helpers.extend(Chart.elements.Rectangle.prototype, { draw: chartjs.draw }); const store = createStore( rootReducer, compose(applyMiddleware(thunk), composeWithDevTools) ); export default class App extends Component { render() { return ( {amp}lt;Provider store={store}{amp}gt; {amp}lt;ThemeProvider theme={theme}{amp}gt; {amp}lt;Router history={browserHistory}{amp}gt; {amp}lt;Routes /{amp}gt; {amp}lt;/Router{amp}gt; {amp}lt;/ThemeProvider{amp}gt; {amp}lt;/Provider{amp}gt; ); } } 

когда я пытался войти в rootReducer, он записывал пустую строку для начальной загрузки, затем приложение разрывалось, затем он регистрировал rootReducer.

SRC / магазин / rootReducer.js

 import { combineReducers } from 'redux'; import searchReducer from './searchReducer'; const rootReducer = combineReducers({ searchReducer: searchReducer }); export default rootReducer; 

SRC / магазин / редукторы / searchReducer.js

 import * as actionTypes from '../actions/actionTypes'; const initialState = { loading: false, result: [], error: '' }; const searchReducer = (state = initialState, action) ={amp}gt; { switch (action.type) { case actionTypes.SEARCH_TRIGGER: return { ...state, loading: true, result: [], error: '' }; case actionTypes.SEARCH_ERROR: return { ...state, loading: false, result: [], error: action.error }; case actionTypes.SEARCH_SUCCESS: return { ...state, loading: false, error: '', result: action.result }; default: return state; } }; export default searchReducer; 

ЦСИ / магазин / действия / actionTypes.js

 // create campaign actions export const UPDATE_STEPPER_STATE = 'UPDATE_STEPPER_STATE'; export const SEARCH_TRIGGER = 'SEARCH_TRIGGER'; export const SEARCH_SUCCESS = 'SEARCH_SUCCESS'; export const SEARCH_ERROR = 'SEARCH_ERROR'; 

ЦСИ / магазин / действия / stepperActions.js

 import * as actionTypes from './actionTypes'; export const updateStepperState = data ={amp}gt; { return { action: actionTypes.UPDATE_STEPPER_STATE, data }; }; 

экспортируется в index.js в том же каталоге

 export { updateStepperState } from './stepperActions'; 

пакеты

 "react-redux": "^7.1.3", "redux": "^4.0.4", "redux-devtools-extension": "^2.13.8", "redux-thunk": "^2.3.0", "thunk": "0.0.1", 
IhapMustapha

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

Похоже, ваш путь к searchReducer неверен.

Изменить это:

 import searchReducer from './searchReducer'; 

к этому:

 import searchReducer from './reducers/searchReducer'; 

в вашем файле rootReducer.js .

Это дает вам ошибку. Ожидается, что редуктор будет функцией, потому что searchReducer возвращает undefined .

эй попробуйте создать магазин, как это

 const store = createStore( rootReducer, composeWithDevTools(applyMiddleware(thunk)) ); 

Я думаю, что вы не можете использовать несколько улучшений магазина вместе, вы либо выбираете compose или composeWIthDevTools, и создаете магазин на основе среды, например, для разработки, использования composeWithDevTools и для производственного использования, compose.