老师,getTodos返回的不是todos中的data数组吗,为什么reselect中不写成(data,filter) =>...呢

来源:5-9 常用库集成: Reselect

Freya_Luo

2020-08-09

export const getFilter = state => state.filter;

const getTodos = state => state.todos.data;
 
export const getVisibleTodos = createSelector(
  [getTodos, getFiler],
  (todos, filter) =>{
    switch (filter) {
        case "all":
            return todos;
        case "active":
            return todos.filter((todo) => !todo.completed);
        case "completed":
            return todos.filter((todo) => todo.completed);
        default:
            return new Error("unknown filter: " + filter);
    }}
)

老师,请问 getTodos 这个selector返回的是todos中的data, 在createSelector中传入的参数为什么不是(data,  filter) => {} 而是(todos, filter) => {}呢? 这样传入的这个object 不是还含有isFetching 和error这两个属性吗? 谢谢老师。

写回答

2回答

艾特老干部

2020-08-10

你好。createSelector传入的第二个参数是一个函数,函数签名形如:(param1, param2)=> {}。

(todos, filter) => {} 中,todos, filter都是参数名,是形参,不是实参。参数名你可以任意命名,叫(data,  filter) => {}也可以。 


你的问题是把形参和实参搞混了。


0
1
Freya_Luo
谢谢老师!
2020-08-13
共1条回复

艾特老干部

2020-08-09

你好, 请补充下你的问题,添加问题涉及到的具体的代码。没有看懂你当前的问题。

0
1
Freya_Luo
老师, 问题已补充!
2020-08-10
共1条回复

React16+Redux实战企业级大众点评Web App

从架构设计到部署上线,带你学习React技术栈与核心思想

1071 学习 · 306 问题

查看课程