react redux docのtodoの例では、DanはTOGGLE_TODO
タイプのアクションをtodos
に渡し、それをそれぞれのtodoに渡します。私は彼のロジックがtodo
レデューサーにあったtodo.id
をチェックしていたことに気付きました。このロジックはtodos
でも実行できませんでしたか?私には、仕事をすべてのtodoに渡すのではなく、トグルする必要があるかどうかを把握するよりも、それぞれのtodoを反復するよりも、より高いレベルでロジックを処理する方が良いでしょう。ダンがこのようにした理由はありますか?親減速機対子減速機で行われる反復減算ロジック
const todo = (state = {}, action) => {
switch (action.type) {
case 'ADD_TODO':
return {
id: action.id,
text: action.text,
completed: false
}
case 'TOGGLE_TODO':
if (state.id !== action.id) {
return state
}
return Object.assign({}, state, {
completed: !state.completed
})
default:
return state
}
}
const todos = (state = [], action) => {
switch (action.type) {
case 'ADD_TODO':
return [
...state,
todo(undefined, action)
]
case 'TOGGLE_TODO':
return state.map(t =>
todo(t, action)
)
default:
return state
}
}
export default todos