2017-05-24 10 views
1

私は、次のreact reduxの.dispatchの使い方は?

CatsPage.jsあります

import React from 'react'; 
import PropTypes from 'prop-types'; 
import {connect} from 'react-redux'; 
//import * as catActions from '../../actions/catActions'; 
import CatList from './CatList'; 
import {loadCats} from '../../actions/catActions'; 

class CatsPage extends React.Component { 
    componentDidMount() { 
    this.props.dispatch(loadCats()) 
    } 
    render() { 
    return (
     <div> 
     <h1>Cats</h1> 
     <div> 
      <CatList cats={this.props.cats} /> 
     </div> 
     </div> 
    ); 
    } 
} 

CatsPage.propTypes = { 
    cats: PropTypes.array.isRequired 
}; 

function mapStateToProps(state, ownProps) { 
    return { 
    cats: state.cats 
    }; 
} 

export default connect(mapStateToProps)(CatsPage); 

catActions.js

import * as types from './actionTypes'; 
import catApi from '../api/CatsApi'; 

export function loadCats() { 
    return function(dispatch) { 
    return catApi.getAllCats().then(cats => { 
     dispatch(loadCatsSuccess(cats)); 
    }).catch(error => { 
     throw(error); 
    }); 
    }; 
} 

export function loadCatsSuccess(cats) { 
    return {type: types.LOAD_CATS_SUCCESS, cats}; 
} 

私は次のようなエラーになっている:私は Uncaught Error: Actions must be plain objects. Use custom middleware for async actions. Uncaught Error: Actions must be plain objects. Use custom middleware for async actions. at dispatch (createStore.js:166)

を新生React + Reduxの使い方を学びましょう。ディスパッチ作業とloadCats()を行うために修正する必要がある間違ったことは何ですか?

ありがとうございました!

+0

あなたの質問にloadCatsアクションのコードを含めることはできますか? –

+0

@PatrickHundが質問のloadCatsを追加しました。ありがとう! – AnApprentice

答えて

2

あなたのショップを正しくインストール/設定していない可能性があります。

import { createStore, applyMiddleware } from 'redux'; 
import thunk from 'redux-thunk'; 
import rootReducer from './reducers/index'; 

// Note: this API requires [email protected]>=3.1.0 
const store = createStore(
    rootReducer, 
    applyMiddleware(thunk) 
); 
+0

それをした、ありがとう – AnApprentice

関連する問題