可能是我对Redux来说很厚实而且非常新,但如果有人能给我一个简单的用例来使用像normalizr这样的话,我会很高兴。
我不明白这里给出的例子How do I handle nested API responses in a Flux application?
我想我没有得到的是商店it's hard使用嵌套对象的原因。
我的应用程序是一个中型大型门户网站,用户可以通过与两个不同的API交谈来显示列表,创建新项目和新列表。
答案 0 :(得分:5)
我规范化了所有对象,但我没有使用normalizr。
我喜欢规范化,因为它使代码更具可读性。以下是一个例子。它还使参考对象和消除重复变得更加容易。例如,如果您订阅了某个elses列表中的todo项目,则您必须在订阅者的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; }
}
答案 1 :(得分:1)
使用嵌套对象不一定很难。
这完全取决于您的使用案例以及您的UI的组织方式。
如果使用normalizr没有意义,请不要使用它。该模块确实不是必需的。