任务列表过滤——实现列表的筛选-从唯一的数据源当中获取状态数据即可 & 过滤当前的列表结果-给data传值state
- 实现列表的筛选
src/views/List.js
function filterList (state) {
// 过滤列表数据
return state.todos.filter(item => {
if (state.currentType === 'all') {
// 全部列表
return true
} else if (state.currentType === 'will' && !item.done) {
// 未完成
return true
} else if (state.currentType === 'done' && item.done) {
return true
} else {
return false
}
})
}
function mapStateToProps (state) {
// 动态计算全选按钮的状态:如果所有的条目都被选中,那么全选按钮的状态就是true,只要有一个没有选中就是false
// 数组的方法every作用:判断数组中是否所有元素都满足条件,如果都满足就返回true,否则返回false
let isAll = state.todos.every(item => {
return item.done
})
// 过滤当前的列表结果-给上面传值state
let todos = filterList(state)
return {
// 从唯一的数据源当中获取状态数据即可
todos: todos,
isAll: isAll
}
}
过滤-效果