Javascript 反应+;Redux-未捕获错误:操作可能没有未定义的“错误”;“类型”;财产
我尝试创建一个简单的react-redux ajax工作示例,如下所示,但出现以下错误:Javascript 反应+;Redux-未捕获错误:操作可能没有未定义的“错误”;“类型”;财产,javascript,reactjs,redux,Javascript,Reactjs,Redux,我尝试创建一个简单的react-redux ajax工作示例,如下所示,但出现以下错误: Uncaught Error: Actions may not have an undefined "type" property. Have you misspelled a constant? 错误由以下原因引发: dispatch(fetchProducts(this.props))在App.jsx中 import React, { Component } from 'react'; import
Uncaught Error: Actions may not have an undefined "type" property. Have you misspelled a constant?
错误由以下原因引发:
dispatch(fetchProducts(this.props))代码>在App.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]);
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]);
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]);
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]);
import React,{Component}来自'React';
从“react dom”导入react dom;
从“redux”导入{compose,createStore,applyMiddleware}
从'react redux'导入{Provider};
从“redux thunk”导入thunk中间件;
从“redux logger”导入createLogger;
从'redux devtools'导入{createDevTools,persistState};
从“./DevTools.jsx”导入DevTools;
从“/App.jsx”导入应用程序;
从“./reducers.js”导入rootReducer;
const loggerMiddleware=createLogger();
函数配置存储(初始状态){
返回createStore(
减根剂,
初始状态,
DevTools.instrument(),
applyMiddleware(
Thunk,
日志软件
),
//允许您在地址栏中写入?debug_session=以持久化调试会话
persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)
)
}
const store=configureStore();
ReactDOM.render(
,document.getElementsByClassName('products')[0]);
您刚刚忘记编写增强器,createStore
的第三个参数必须是一个函数,因此您需要编写所有增强器,以提供唯一的增强器
:
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]);
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]);
import React,{Component}来自'React';
从“react dom”导入react dom;
从“redux”导入{compose,createStore,applyMiddleware}
从'react redux'导入{Provider};
从“redux thunk”导入thunk中间件;
从“redux logger”导入createLogger;
从'redux devtools'导入{createDevTools,persistState};
从“./DevTools.jsx”导入DevTools;
从“/App.jsx”导入应用程序;
从“./reducers.js”导入rootReducer;
const loggerMiddleware=createLogger();
函数配置存储(初始状态){
返回createStore(
减根剂,
初始状态,
谱写(
applyMiddleware(
Thunk,
日志软件
),
DevTools.instrument(),
persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)
)
)
}
const store=configureStore();
ReactDOM.render(
请尝试将您提供的代码缩小到您认为相关的区域-很难在一个问题中通读整个应用程序。至于您的问题,您似乎将redux thunk作为命名导入,而它应该是默认导入,例如,从“redux thunk”导入thunk中间件。
@ShaneCavaliere谢谢或者回答。我编辑了我的问题并尝试减少问题中的代码(我是redux新手)。我将thunkMiddleware
更改为默认导入,但没有帮助。中间件需要是createStore
的第三个参数,而不是第四个参数-根据文档:createStore(reducer,[initialState],[enhancer])
-尝试删除开发工具注入。@你说得对,谢谢。