1

React with Redux をストアとして使用しています。また、react-redux ライブラリを使用して 2 つを統合しています。私のストアには 2 つのデータ セットが含まれています。

  • タスク { ID、名前、担当者 ID }
  • ユーザー { ID、名前 }

私は(react-reduxを使用して)TaskListComponentを持っていますconnect-sを使用して私のストアに:

@connect(state => {
    tasks: state.tasks,
    users: state.users
})

リストにはタスク名またはユーザー名を検索できるフィルターがあるため、両方が必要です。コンポーネントは「ユーザー対応」である必要があります。

このコンポーネントは、タスク名と割り当てられたユーザーの名前を表示する TaskItemComponent という別のコンポーネントを一覧表示します。

タスクの割り当てられたユーザーを解決するための最善の方法を決定するのに苦労しています。

  • React のガイドラインによると、Item コンポーネントは Task を prop として受け取り、render 関数で User 自体を解決する必要があります。ただし、これにはコンポーネントがストア対応である必要があり、react-redux ライブラリを使用すると、コンポーネントがストアにアクセスせずにストアにアクセスできるように設計されていないようconnectです。

  • または、リスト内の User を解決し、それをタスクとともに Item コンポーネントに渡すこともできます<TaskItemComponent task={task} assignee={resolveTaskAssignee(task)} />。これには、アイテムを「ダム」に保つという利点があり、ストアの変更をリッスンする必要がない (またはストアについて知る必要がない) ことを意味します。

アドバイスをいただければ幸いです。

4

2 に答える 2

1

どちらのアプローチも問題ありません。外部から props を渡すことから始めて、面倒になったら、Taskコンポーネントに props として受信taskさせますuser、を使用して読み取りますconnect

https://stackoverflow.com/a/25701169/458193も参照してください。

于 2015-10-18T13:32:41.477 に答える
0

オプション #2 に本質的な問題はありません。どこかでデータ操作を行う必要があります。コンポーネントでこれらの操作を実行するのは常に適切な場所smartです。

個人的には、ストア内のデータ モデルを改善したいと考えています。しかし、あなたはあなたが得たものを手に入れました。

于 2015-09-07T10:46:08.517 に答える