728x90
반응형
체크 하기/풀기
src/App.js
import React, { Component } from 'react';
import ToDoListTemplate from './components/ToDoListTemplate';
import Form from './components/Form';
import ToDoItemList from './components/ToDoItemList';
class App extends Component {
(...)
handleToggle = (id) => {
const { todos } = this.state;
// 파라미터로 받은 id 를 가지고 몇번째 아이템인지 찾습니다.
const index = todos.findIndex(todo => todo.id === id);
const selected = todos[index]; // 선택한 객체
const nextTodos = [...todos]; // 배열을 복사
// 기존의 값들을 복사하고, checked 값을 덮어쓰기
nextTodos[index] = {
...selected,
checked: !selected.checked
};
this.setState({
todos: nextTodos
});
}
render() {
const { input, todos } = this.state;
const {
handleChange,
handleCreate,
handleKeyPress,
handleToggle
} = this;
----------
return (
<ToDoListTemplate form={(
<Form
value={input}
onKeyPress={handleKeyPress}
onChange={handleChange}
onCreate={handleCreate}
/>
)}>
<ToDoItemList todos={todos} onToggle={handleToggle}/>
</ToDoListTemplate>
);
}
}
export default App;
아이템 제거하기
src/App.js
import React, { Component } from 'react';
import ToDoListTemplate from './components/ToDoListTemplate';
import Form from './components/Form';
import ToDoItemList from './components/ToDoItemList';
class App extends Component {
(...)
handleRemove = (id) => {
const { todos } = this.state;
this.setState({
todos: todos.filter(todo => todo.id !== id)
});
}
render() {
const { input, todos } = this.state;
const {
handleChange,
handleCreate,
handleKeyPress,
handleToggle,
handleRemove
} = this;
return (
<ToDoListTemplate form={(
<Form
value={input}
onKeyPress={handleKeyPress}
onChange={handleChange}
onCreate={handleCreate}
/>
)}>
<ToDoItemList todos={todos} onToggle={handleToggle} onRemove={handleRemove}/>
</ToDoListTemplate>
);
}
}
export default App;
반응형
'프로그래밍 > React' 카테고리의 다른 글
Redux 소개 (0) | 2021.03.31 |
---|---|
to do list 만들기_7 (컴포넌트 최적화) (0) | 2021.03.29 |
to do list 만들기_5 (초기 state 정의와 Form 기능 구현) (0) | 2021.03.25 |
to do list 만들기_4 (ToDoItemList, ToDoItem 컴포넌트 만들기) (0) | 2021.03.23 |
Redux 규칙 (0) | 2021.03.22 |