Фильтровать массив onClick и отобразить оставшиеся элементы из массива

Я создал приложение todo, и я пытаюсь фильтровать todos в трех разных условиях, завершенных, незавершенных. По умолчанию я хочу показать все элементы, а затем отфильтровать их. Я знаю, что я могу использовать фильтр следующим образом:

array.filter(t => t.completed) or array.filter(t => !t.completed)

, но я не знаю, как отображать их все, а затем отображать только отфильтрованные элементы. Код выглядит следующим образом:

render() {
let notes = this.state.notes.filter(n => n.completed).map((todo, 
index) => {
  return (
    <Todo 
      key={index} 
      note={todo} 
      deleteTodo={() => this.deleteTodo(index)} 
      handleClick={() => this.handleClick(index)}/>
  );
});
const allNotes = this.state.notes.length
let completedNotes = this.state.notes.filter(n => n.completed).length
let incompletedNotes = this.state.notes.filter(n => 
!n.completed).length
return (<div>{notes}</div>);
0
задан 13 August 2018 в 16:11

1 ответ

Просто отфильтруйте массив с помощью map;

render() {
  return (
    <div>
       {this.state.todos.filter(t => t.completed).map(t => (
         <TodoItem>{t.text}</TodoItem>
        }
    </div>
  )
}
1
ответ дан 15 August 2018 в 16:58

Другие вопросы по тегам:

Похожие вопросы: