2016-01-07 21 views
5

私はreact-reduxを使ってReactをReduxストアに接続し、 "connect" APIを使用してコンポーネントに "dispatch"プロパティを注入します。しかし、コンポーネントは "ディスパッチ"プロパティを受け取りません。ここで私が遭遇した問題を証明するためのコードです:React Redux接続APIはディスパッチプロパティを挿入しません

"use strict" 

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var Redux = require('redux'); 
var ReactRedux = require('react-redux'); 
var Provider = ReactRedux.Provider; 

function menuManager(state = {count: 0}, action) { 
    switch (action.type) { 
    case 'ADD': 
     return state + 1; 
    case 'REMOVE': 
     return state - 1; 
    default: 
     return state; 
    } 
} 

let store = Redux.createStore(menuManager); 

let TestLab = React.createClass({ 
    onRemove: function(itemRemove) { 
    // this.props.dispatch undefined. 
    this.props.dispatch({type: 'REMOVE'}); 
    }, 
    onAdd: function() { 
    const { dispatch } = this.props 
    // this.props.dispatch undefined. 
    this.props.dispatch({type: 'ADD'}); 
    }, 
    getInitialState: function() { 
    return { count: 0 }; 
    }, 
    render: function() { 
    return (
     <div> 
      <p>Total count: { this.state.count }</p> 
      <button type="button" onClick={this.onAdd}>Add Item</button> 
     </div> 
    ); 
    } 
}); 

function select(state) { 
    return state; 
} 

ReactRedux.connect(select)(TestLab); 

var target = document.createElement('div'); 
document.body.appendChild(target); 
ReactDOM.render(<Provider store={store}><TestLab /></Provider>, target); 

私は「this.props.dispatch」を呼び出そうと、私は「this.props.dispatch」が定義されていないというエラーが表示されます。

答えて

6

接続したコンポーネントを使用していません。connect()returns a new componentです。

TestLab = ReactRedux.connect(select)(TestLab); 
ReactDOM.render(<Provider store={store}><TestLab /></Provider>, target); 

あなたは、同様にいくつかの他の問題に実行されますつまり、あなたがthis.state.count代わりのthis.props.countを使用していて、自分の減速関数はオブジェクトではありません内部の整数で増減しようとします。

+1

ありがとうございました。それは動作します。他の2つの問題を指摘してくれてありがとう。 – JustWonder

関連する問題