1
我的應用程序已經有各種容器對象使用的大量選擇器。這些對於訪問狀態的不同部分非常有用,並且使得重構狀態變得更容易。如何在Reduce Reducer中使用reselct選擇器
現在我想在我的一些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
}
}
是的,很好的解決 – burtyish
爲什麼你會不想把記憶化的優勢在getUncompletedTodos選擇器? – user2602152
@ user2602152您正在調用reducer來改變狀態。這裏的記憶就像總是缺少緩存。 –