2017-07-03 13 views
0

idの値をreduxストアに追加するには、メソッドthis.props.addItemToCart(elem.id)を呼び出していますが、動作しません。値は追加されません。 は、ここで私はここに示した質問に関連しているlink to containerreducer and an action_creator code.
小抄録、です:Redux mapDispatchToPropsメソッドが正常に動作していません

... 
    <Button onClick={() => this.props.addItemToCart(elem.id)}> 
       Add to Cart 
    </Button> 

....

const mapDispatchToProps = (dispatch) => ({ 
    getAPIData() { 
    dispatch(...., 
    addItemToCart(value) { 
    dispatch(addToCart(value)); 
    }, 
    removeItemFromCart(value) { 
    dispatch(removeFromCart(value)); 
    } 
}); 

export default connect(mapStateToProps, mapDispatchToProps)(ProductsList); 

はここで減速機のコードの一部です:

const handleCart = (state = initialState.addedIds, action) => { 
    switch (action.type) { 
    case ADD_TO_CART: 
     if (state.indexOf(action.productId) !== -1) { 
     return state 
     } 
     return [...state, action.productId]; 
    case REMOVE_FROM_CART: 
     return state.filter(productId => action.productId !== productId); 
    default: 
     return state 
    } 

}; 
+0

「Button」コンポーネントの完全なコードを含める必要があります。 'this.props'は渡された小道具を参照していますか?これはクラスコンポーネントの 'render'メソッドにありますか? –

+0

はいコンソールログインメソッドを使用してチェックし、コンソールに値を渡しています –

+0

あなたは[mcve]ではありません。それであなたの質問に答えることはできません。 –

答えて

1

アクション作成者はアクションにproductIdプロパティを作成しないため、常にundefinedになります。

if (state.indexOf(action.productId) !== -1) { 

あなた自身のコードを読んでください(この質問には含まれていません)。商品IDの値をaction.payloadに設定します。したがって、それに応じて減速機のコードを変更してみてください。

if (state.indexOf(action.payload) !== -1) { 
+0

あなたのコードに他のバグもあるかもしれません。私はそれを実行していないし、いくつかの機能は 'babel-plugin-transform-class-properties'のような未知のbabelプラグインに依存しているので、同一のビルド環境なしで再現することはできません。 –

+0

babel-plugin-transform-class-properties - これはTC39の提案の第2段階です。そして、素晴らしい助けに感謝します。この提案はこの段階で2年目に固執した –

0

mapDispatchToPropsの書き方が間違っています。それはこのようなものでなければなりません。

function mapDispatchToProps(dispatch) { 
    return { 
     addItemToCart: bindActionCreators(addToCart, dispatch), 
     // Other actions should go here ... 
    }; 
} 

そして、それは

this.props.addItemToCart(values); 

最後に、このような接続ヘルパーに渡し、それゆえアクションが使用して呼び出すことができ、小道具にあなたの行動をバインドします。

export default connect(mapStateToProps, mapDispatchToProps)(ProductsList); 

希望します。ハッピーコーディング!

+0

他のすべてのメソッドが正常に動作しているので、私がFrontendMasters Course = CompleteイントロからReact V3 https://btholt.githubに行ったmapdispatchtopropを書いています。io/complete-intro-to-react/ –

+0

彼はES2015メソッドの簡略構文を使用しています。それを行う一般的な方法ではありませんが、あなたの答えと同じ結果を与える必要があります。 –

+0

これを試して、それがどうなるかを見てください。そうでない場合は、別の場所にログインしてエラーがどこにあるかを確認する必要があります。 –

関連する問題