【发布时间】:2017-08-07 13:07:09
【问题描述】:
我的应用已经拥有大量可供各种容器对象使用的选择器。这些非常适合访问状态的不同部分并使重构状态变得更加容易。
现在我想在我的一些 reducer 函数中使用我的选择器。问题在于,在 reducer 内部,state 参数指的是状态的特定切片,而选择器函数期望与状态根对象一起调用。
人为的例子:
/* Selectors */
const getTodos = state => state.todos;
const getUncompletedTodos = createSelector(
[ getTodos ],
todos => todos.filter(t => !t.completed)
);
/* Reducer */
const todosReducer = (state, action) => {
switch (action.type) {
case 'ADD_TODO':
return [
...state,
{
id: action.id,
text: action.text,
completed: false
}
];
case 'REMOVE_COMPLETED_TODOS':
return getUncompletedTodos(state); // <-- this won't work
}
}
【问题讨论】: