reduxに接続している反応コンポーネントからディスパッチを呼び出そうとしています。何らかの理由で私はthis.props.dispatch
をこのコンポーネントから呼び出すことができません。しかし、コンポーネントではshowPopup
アクションが正常に機能していますか?接続コンポーネントでディスパッチを使用できません
Reading the docsconnect()
がある場合はいつでもthis.props.dispatch
に電話する必要があります。私はここで行方不明の何か?
import React, { Component } from 'react';
import { connect } from 'react-redux';
// Actions
import { showPopup } from '../../../actions';
class Channels extends Component {
render() {
console.log(this.props.dispatch); // <- undefined (?)
return <div>some stuff</div>;
}
}
export default connect(null, { showPopup })(Channels);
アップデート1
以下は、これを短縮する方法はありません、それは動作しますか?
function mapDispatchToProps(dispatch) {
let actions = bindActionCreators({ showPopup });
return { ...actions, dispatch };
}
アップデート2
export default connect(null, (dispatch) => bindActionCreators({ showPopup, dispatch }, dispatch))(Channels);
を使用する必要がない場合は
connect(null, { showPopup, otherAction, someAction })(Channels);
、あなたはアクションを派遣する
this.props.showPopup()
またはthis.props.otherAction
またはthis.props.someAction
を使用することができますあなたのコンポーネントで 'this.props.showPopup(...)'を呼び出すだけで、実際にあなたのアクションが作成され、ディスパッチされます。 '...'はあなたのアクションクリエイターが取る引数です。これにより、アクションを手動で作成する必要がないため、作業が大幅に簡略化されます。私が知っているBalázsÉ[email protected] –、私はまだ他のアクションのための 'dispatch'を必要とする;) – NealVDV
理由だけではなく、同様にそのためのアクションの作成者を記述しませんか?あなたはあなたが望むだけ多くのものを持つことができます。 '{showPopup、otherActionCreatorは}'このため –