2016-05-01 47 views
2

我試圖創建一個簡單的反應,終極版,Ajax的例子,下面Reddit API tutorial,但我得到這個錯誤:陣營+終極版 - 未捕獲的錯誤:操作可能沒有未定義的「類型」屬性

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

該錯誤是由拋出:

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

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]); 
+1

請儘量將您提供的代碼縮小到您認爲相關的區域 - 這很難通讀一個問題中的整個應用程序。至於你的問題,看起來你正在導入redux-thunk作爲一個命名導入,當它應該是一個默認的導入,例如, '從'redux-thunk'中導入thunkMiddleware。 –

+0

@ShaneCavaliere感謝您的迴應。我編輯了我的問題,並試圖減少我的問題中的代碼(我是新的redux)。我改變了'thunkMiddleware'作爲默認導入,但它沒有幫助。 – Matt

+1

根據文檔:createStore(reducer,[initialState],[enhancer]),中間件需要成爲createStore的第三個參數,而不是第四個參數。嘗試刪除開發工具注入。 – lux

回答

3

你忘記譜寫自己的增強,第三個參數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 doc

相關問題