2015-11-01 35 views
0

首先要耐心等待我是Redux新手。Redux待办事项列表示例 - 待办事项状态如何更新取决于可见性过滤器

我读http://rackt.org/redux/docs/basics/ExampleTodoList.html

和所有的一切我已经得到了要点,但我真的不明白

的待办事项状态是如何被更新取决于知名度过滤器。

我的意思是,如果我点击即SHOW_COMPLETED,

的SPA只显示与完成TODO:真实的,但为什么呢?逻辑在哪里? 我没有看到任何:(

通常在一个正常的脚本应该是

排序如果state.visibiltyFilter === SHOW_COMPLETED过滤器状态...

在此先感谢。

回答

1

如果选中在智能组件,在容器底部/ App.js你会看到:

// This is where the filtering happens 
function selectTodos(todos, filter) { 
    switch (filter) { 
    case VisibilityFilters.SHOW_ALL: 
     return todos 
    case VisibilityFilters.SHOW_COMPLETED: 
     return todos.filter(todo => todo.completed) 
    case VisibilityFilters.SHOW_ACTIVE: 
     return todos.filter(todo => !todo.completed) 
    } 
} 

// Which props do we want to inject, given the global state? 
// Note: use https://github.com/faassen/reselect for better performance. 
function select(state) { 
    return { 
    visibleTodos: selectTodos(state.todos, state.visibilityFilter), 
    visibilityFilter: state.visibilityFilter 
    } 
} 

// Wrap the component to inject dispatch and state into it 
export default connect(select)(App) 

滤波发生在你连接到将组件发送给商店。 除了在状态中存储过滤列表之外,您还可以指定对于此特定组件,您应该过滤从存储中获得的待办事项,然后再将它们作为道具传递给组件。