私はこれまで使用していなかったReact-Reduxを使用してメトリクスページを作成しています。1つのイベントを使用してreduxで複数のajaxリクエストをトリガーする
<input id=start_date />
<input id=end_date />
<button id=submit onClick={ this.props.fetchChartData() }/>
<Chart1 />
<Chart2 />
店の構造はこれです:
基本的な構造は、このようなものであるサンクを使用して
dates
start_date: "2016-09-16"
end_date: "2016-09-16"
charts
Chart1
api_func: "get_supported_events"
fetching: false
fetched: false
data: null
error: null
Chart2
api_func: "get_events_closed"
fetching: false
fetched: false
data: null
error: null
、私の行動は今、これらの機能が含まれます。
function getStateURL(state){
return state.charts.Chart1['api_func'];
}
export function fetchChartData(){
return (dispatch, getState) => {
dispatch(fetchChartDataStart());
return fetch(getStateURL(getState()))
.then((response) => response.json())
.then((json) => dispatch(receiveChartData(json)))
.catch((err) => dispatch(fetchChartDataError(err)));
}
}
問題は、私はablでなければならないように感じるので、私はチャート名をハードコードしたくありませんすべてのチャートが同じことをする必要があるため、1つのアクションを記述します。
私が推測できる最良の解決策は、チャートのコンポーネントがリッスンできるイベントをトリガーするようにすることです。状態が要求されると、状態全体ではなくチャートの部分に制限されます。反応コンポーネントが他のコンポーネントによってキャッチされる可能性のあるイベントをトリガーする方法はありますか?
:あなたのような何かを行うことができますか?また、チャート名を「ハードコーディング」している場所もありますか? '['api_func']'を意味しますか? – ajmajmajma
今、私はボタンからfetchChartDataを呼び出しています。別のURLを取得するためには、すべてのグラフが必要です。私はボタンがアプリケーション内にあるチャートに無関心であるようにしたい。すべてのチャートを更新する必要があることを通知する必要があります。 ハードコードはgetStateURLにあります。ここではChart1のapi_funcを指定します。 – carpenterwb
すべてのチャートを渡して文字列をループするのではなく、すべての可能なチャートが分かっている場合は、独自のマッピングを作成するのはなぜでしょうか。または、バックエンドにアクセスできる場合は、チャートのリストをパラメータとして取る単一の呼び出しにしてください。 – ajmajmajma