useSelector
react-reduxドキュメントのフックの例には、コードスニペットがあります。
const selectNumOfTodosWithIsDoneValue = createSelector(
state => state.todos,
(_, isDone) => isDone,
(todos, isDone) => todos.filter(todo => todo.isDone === isDone).length
)
ご覧のとおりisDone
、はのパラメータですselectNumOfTodosWithIsDoneValue
。しかし、なぜそれは別のパラメトリックセレクターに入れられるの(_, isDone) => isDone
ですか?次のように書けますか?
const selectNumOfTodosWithIsDoneValue = createSelector(
(state, isDone) => state.todos.filter(todo => todo.isDone === isDone),
filteredTodos => filteredTodos.length
)
2つのアプローチの違いは何ですか?
2番目の例では、常に新しい配列参照が返されるため、filter()
常に完全な再計算が行われます。
現在の(最初の)例には特に満足していませんが、長さを再計算するのはどちらかstate.todos
またはisDone
変更された場合のみであるという点でメモ化されています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加