有时减速机会变得很乱:
const initialState = {
notificationBar: {
open: false,
},
};
export default function (state = initialState, action) {
switch (action.type) {
case actions.LAYOUT_NOTIFICATIONBAR_OPEN:
return Object.assign({}, state, {
// TODO: Find a cleaner way to do this!
notificationBar: Object.assign({}, state.notificationBar, {
open: true,
}),
});
default:
return state;
}
}有什么更简洁的方法吗?
发布于 2017-06-04 14:48:03
这里的所有建议都是有效的,但我想提出另一种解决方案。这里出现的问题肯定是一个常见的模式,所以我认为最好是为这类更新编写自己的接口,并在减速器内部坚持使用它,并使用一个函数在所有减速器内部进行深入更新。
例如,我创建了一个图书馆,我下一次尝试解决这个问题:我得到模块的类型(所谓的“瓷砖”),函数来执行操作(包括异步和同步),以及基于传递的参数进行所需的嵌套。所以,就你的情况而言,会是这样的:
import { createSyncTile } from 'redux-tiles';
const uiTile = createSyncTile({
type: ['ui', 'elements'],
fn: ({ params }) => params,
// type will be `notificationBar`
nesting: ({ type }) => [type],
});仅此而已--它将被正确地更新为任意嵌套。此外,瓷砖还提供了选择器,所以您不必亲自担心数据的确切位置,只需使用它们即可。所以,我不想说它是最好的解决方案,但是这个想法很简单--不要害怕编写自己的实现,然后使用工厂来解决这个问题。
https://stackoverflow.com/questions/35592078
复制相似问题