我对所有对象进行了规范化,但我不使用 normalizr。
我喜欢规范化,因为它使代码更具可读性。下面是一个例子。它还使引用对象和消除重复变得更加容易。例如,如果您订阅了其他人列表中的待办事项,您要么必须在订阅者的subscribedTodos 列表中返回该待办事项的重复版本,要么您必须知道其他待办事项的用户 ID 和待办事项才能按顺序去实现它。
回到可读性:以下哪一个更易于阅读/理解?
function rootReducer (state, action) {
const { type, payload } = action;
if(action.type === MODIFY_TODO) {
return {
...state,
users: {
...state.users,
[payload.userID]: {
...state.users[userID],
todos: {
...state.users[userID].todos,
[payload.todo.todoID]: {
...state[userID].todos[todoID],
...todo
}
}
}
}
}
} else { return state; }
}
function rootReducer (state, action) {
const { type, payload } = action;
if(type === MODIFY_TODO) {
return {
...state,
todos: {
state.todos[payload.todo.id]: {
...state.todos[payload.todo.id],
...payload.todo
}
}
}
} else { return state; }
}