mirror of
https://github.com/microsoft/frontend-bootcamp.git
synced 2026-01-26 14:56:42 +08:00
cleaner filtertodos
This commit is contained in:
@@ -18,36 +18,15 @@ type TodoListProps = ReturnType<typeof mapStateToProps> & ReturnType<typeof mapD
|
|||||||
class TodoList extends React.Component<TodoListProps> {
|
class TodoList extends React.Component<TodoListProps> {
|
||||||
render() {
|
render() {
|
||||||
const { filter, todos } = this.props;
|
const { filter, todos } = this.props;
|
||||||
let filteredTodos: typeof todos = {};
|
const filteredTodos = Object.keys(todos).filter(id => {
|
||||||
|
return filter === 'all' || (filter === 'completed' && todos[id].completed) || (filter === 'active' && !todos[id].completed);
|
||||||
switch (filter) {
|
});
|
||||||
case 'completed':
|
|
||||||
Object.keys(todos).forEach(id => {
|
|
||||||
if (todos[id].completed) {
|
|
||||||
filteredTodos[id] = todos[id];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'active':
|
|
||||||
Object.keys(todos).forEach(id => {
|
|
||||||
if (!todos[id].completed) {
|
|
||||||
filteredTodos[id] = todos[id];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
filteredTodos = todos;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack verticalGap={10}>
|
<Stack verticalGap={10}>
|
||||||
{Object.keys(filteredTodos).map(id => {
|
{filteredTodos.map(id => (
|
||||||
const todo = filteredTodos[id];
|
<TodoListItem key={id} id={id} />
|
||||||
return <TodoListItem key={id} id={id} />;
|
))}
|
||||||
})}
|
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user