2015-11-01 33 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) 

濾波發生在你連接到將組件發送給商店。 除了在狀態中存儲過濾列表之外,您還可以指定對於此特定組件,您應該過濾從存儲中獲得的待辦事項,然後再將它們作爲道具傳遞給組件。