私は現在自分のアプリケーションを構造化しているので、このようなReact-RouterによってレンダリングされるFormNameで渡されたコンフィグレーションをロードするFormWrapperコンポーネント - FormWrapperの負荷が、それはActionCreatorを呼び出し、サーバーに関するページから設定を取得し、objPropsを経由して構成のページの受け渡しをレンダリング子コンポーネントでアクションを発生させたときにディスパッチの途中でディスパッチできない
<Route path="/Diary/Test" components={require('./components/wrapperComponents/formWrapper.jsx')} FormName="AppointmentBooking"/>
。このように物事を行う理由は、もともと私たちは、ユーザーが簡単にフォームを見て、どのコンポーネントが、それは私たちがフォームを保存するために許可されて示されており、それに付随し、どのようにカスタマイズすることができるようにするためにできるようにしたかったということです
render: function() {
return(React.createElement(PageComponents[this.props.FormName], objProps);
}
子コンポーネントを設定してから、包括的なラッパーコンポーネントでロードするだけです。だから、フォームの包括的なものはすべてフォームラッパーに置かれ、特定のコードを構成すると各ページコンポーネントに座り、その特定のページに関連する部分のみを読み込むことができます。
私は、AppointmentBookingフォームで、いくつかのデータ(たとえば、予定場所のドロップダウンリストのオプション)を読み込むために、componentWillMount/componentDidMountメソッドでアクションを発生させる必要がある場合、「Can not発送中に発送する "というエラーが発生します。
私が推論したのは、フォームラッパーによってトリガーされた最初のアクションがデータを持っていたためformWrapperの再レンダリングを引き起こし、React.createElementがトリガーしていたAppointmentBookingコンポーネントをレンダリングしようとしていたということでしたアクションによってディスパッチャエラーが発生します。
私はwaitFor()を使って最初のアクションが完了するのを待ってから2番目のトリガを待つことを読んだことがありますが、これは子コンポーネントがそれを知っていて、懸念の適切な分離を維持していない。
これは一般的な問題ですか、私はこれに正しい方法でアプローチしていますか?もしそうでなければ、これを達成するための提案方法がありますか?
あなたは 'redux-thunk'や' redux-saga'を見たことがありますか?最初に 'redux-thunk'から始めてください。それはあなた自身が複数のアクションを発射できるアクションを起動することを可能にします。 – ctrlplusb
https://github.com/gaearon/redux-thunk – ctrlplusb
提案していただきありがとうございますが、私はおそらく自分の投稿で、私が純粋なフラックスを使用しており、還元していないと言及していたはずです。 –