オブジェクトの異なるデータ型を表す要素を持つ状態があるとします。 各要素は、この種のパターンを達成するための信頼性の高い方法である何ダイナミックコンポーネントのアクションをディスパッチする信頼性の高い方法は何ですか?
export default connect(
(state) => {
return {
events: getRegisteredEventsList(state).map(item => {
return {
title: item.get('name'),
actionButton: <a onClick={dispatch(someActionForThisSpecifiedItem(item))}>Custom Action</a>
}
})
},
(dispatch) => {
return {
}
}
)(Dashboard)
を派遣するさまざまなアクションを持つことができますか? dispatch
メソッドをコンテナの小道具に付ける必要がありますか?私はこの時点でそれを達成するにはどうすればよい
は次のとおりです。
export default connect(
(state) => {
return {
events: getRegisteredEventsList(state).map(item => {
return {
title: item.get('name'),
actionButton: ({dispatch}) => <a
className={"btn btn-success"}
onClick={() => dispatch(someActionForThisSpecifiedItem(item))}>Go To</a>
}
})
}
)(Dashboard)
追加する方法:
renderActionButtons() {
const { actionButtons, dispatch } = this.props
return actionButtons.map(button => renderComponent(button, {
dispatch
}));
}
私のダミー部品に - 私のビューコンポーネントが今する必要があるため、関心事の分離の違反があります知っているとディスパッチプロパティを維持する
私はそれも同様に機能要求を減らすことができるように感じる。
ない私はあなたが正確に何をしようとして理解していれば、あなたが項目のリストを持っていますし、それぞれのリンクを作成したいと考えてくださいを派遣する能力を持っていますそれぞれ異なるアクションを送りますか? – enzoborgfrantz
はい。 MapStateToPropsにコンポーネントの定義を追加しないでください。しかし、私はそれが必要です特定のアイテムのメタデータが異なる場合、私は別のコンポーネントをレンダリングしたい。ダッシュボードコンポーネントのスイッチではなく、ここが良い場所だと考えてください。 –
この場合もこれを行うことができます。私の更新された回答を参考にしてください。 – enzoborgfrantz