React+Redux-未捕获错误:操作可能没有未定义的“;类型“;所有物

React+Redux - Uncaught Error: Actions may not have an undefined "type" property

本文关键字:未定义 所有物 类型 错误 操作 React+Redux-      更新时间:2023-09-26

我试图按照Reddit API教程创建一个简单的react-redux-ajax工作示例,但我得到了这个错误:

Uncaught Error: Actions may not have an undefined "type" property. Have you misspelled a constant?

错误由引发

App.jsx中的dispatch(fetchProducts(this.props));

index.jsx

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { compose, createStore, applyMiddleware } from 'redux'
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger';
import { createDevTools, persistState} from 'redux-devtools';
import DevTools from './DevTools.jsx';
import App from './App.jsx';
import rootReducer from './reducers.js';
const loggerMiddleware = createLogger();
function configureStore(initialState) {
    return createStore(
        rootReducer,
        initialState,
        DevTools.instrument(),
        applyMiddleware(
            thunkMiddleware,
            loggerMiddleware
        ),
        // Lets you write ?debug_session=<name> in address bar to persist debug sessions
        persistState(window.location.href.match(/[?&]debug_session=([^&]+)'b/))
    )
}
const store = configureStore();
ReactDOM.render(
<Provider store={store}>
    <App />
</Provider>, document.getElementsByClassName('products')[0]);

您刚刚忘记编写增强器,createStore的第三个参数必须是一个函数,因此您需要compose所有增强器来提供唯一的enhancer:

index.jsx

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { compose, createStore, applyMiddleware } from 'redux'
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger';
import { createDevTools, persistState} from 'redux-devtools';
import DevTools from './DevTools.jsx';
import App from './App.jsx';
import rootReducer from './reducers.js';
const loggerMiddleware = createLogger();
function configureStore(initialState) {
    return createStore(
        rootReducer,
        initialState,
        compose(
            applyMiddleware(
                thunkMiddleware,
                loggerMiddleware
            ),
            DevTools.instrument(),
            persistState(window.location.href.match(/[?&]debug_session=([^&]+)'b/))
        )
    )
}
const store = configureStore();
ReactDOM.render(
<Provider store={store}>
    <App />
</Provider>, document.getElementsByClassName('products')[0]);

Redux DevTool文档