Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- userManagement
- Styled Components
- 배포
- 로그인
- Ajax
- ui탬플릿
- 밸류즈 홈페이지
- Update
- stock option
- register
- 빌드 및 배포
- mypage
- 파생상품평가
- 이미지 업로드
- 관리자페이지
- 마이페이지
- 스프링시큐리티
- 캘린더 라이브러리
- 달력 라이브러리
- 공통메서드
- jsonwebtoken
- react
- Typesciprt
- Token
- 로그인 로직
- RCPS
- 회원가입로직
- 밸류즈
- 인증처리
- MRC
Archives
- Today
- Total
I T H
[React_Basic 8] TODO 리스트 만들기 7 - 삭제, 수정 본문
[전체 리스트 삭제]
- App.js의 return 안에 리스트 전체지우기 버튼생성 후 클릭이벤트 시 호출되는 함수를 만들어준다.
<button onClick={handleRemoveClick}>DeleteList</button>
const handleRemoveClick = () => {
setTodoData([]);
};
[결과화면]
- DeleteList 버튼 클릭시 오늘계획리스트가 모두 삭제된다.
[리스트 수정]
[List.js] 내용 변경
- List.js에서 State - isEditing, updateTitle 생성
- update onClick이벤트 및 함수추가
- 조건문으로 isEditing이 true일때 업데이트 기능 실행
import React, { useState } from "react";
const List = React.memo(
({
id,
title,
completed,
todoData,
setTodoData,
provided,
snapshot,
handleClick,
}) => {
//console.log("List component");
const [isEditing, setIsEditing] = useState(false);
const [updateTitle, setUpdateTitle] = useState(title);
const handleCompleteChange = (id) => {
let newTodoData = todoData.map((data) => {
if (data.id === id) {
data.completed = !data.completed;
}
return data;
});
setTodoData(newTodoData);
};
const handleEditChange = (event) => {
setUpdateTitle(event.target.value);
};
const handleSubmit = (event) => {
event.preventDefault();
let newTodoData = todoData.map((data) => {
if (data.id === id) {
data.title = updateTitle;
}
return data;
});
setTodoData(newTodoData);
setIsEditing(false);
};
if (isEditing) {
return (
<div
className={`flex items-center justify-between w-full px-4 py-1 my-2 bg-gray-100 text-gray-600 border rounded`}
>
<div className="items-center">
<form onSubmit={handleSubmit}>
<input
value={updateTitle}
onChange={handleEditChange}
className="w-full px-3 py-2 mr-4 text-gray-500 rounded"
/>
</form>
</div>
<div className="items-center">
<button
className="px-4 py-2 float-right"
onClick={() => setIsEditing(false)}
>
X
</button>
<button
className="px-4 py-2 float-right"
type="submit"
onClick={handleSubmit}
>
save
</button>
</div>
</div>
);
} else {
return (
<div
key={id}
{...provided.draggableProps}
ref={provided.innerRef}
{...provided.dragHandleProps}
className={`${
snapshot.isDragging ? "bg-gray-400" : "bg-gray-100"
} flex items-center justify-between w-full px-4 py-1 my-2 text-gray-600 bg-gray-100 border rounded`}
>
<div className="items-center">
<input
type="checkbox"
defaultChecked={false}
onChange={() => handleCompleteChange(id)}
/>
<span className={completed ? "line-through" : undefined}>
{title}
</span>
</div>
<div className="items-center">
<button
className="px-4 py-2 float-right"
onClick={() => handleClick(id)}
>
X
</button>
<button
className="px-4 py-2 float-right"
onClick={() => setIsEditing(true)}
>
UPDATE
</button>
</div>
</div>
);
}
}
);
export default List;
[결과화면]
- UPDATE 클릭했을때 이벤트처리와 값 변경
'React Basic' 카테고리의 다른 글
[ React ] .env 사용하기 (1) | 2024.01.29 |
---|---|
[React_Basic 9] TODO 리스트 만들기 8 - localStorage(데이터저장) (0) | 2024.01.25 |
[React_Basic 7] TODO 리스트 만들기 6 - useCallback(함수최적화) (0) | 2024.01.25 |
[React_Basic 6] TODO 리스트 만들기 5 - React.memo(렌더링최적화) (0) | 2024.01.25 |
[React_Basic 5] TODO 리스트 만들기 4 - List, Lists컴포넌트 분리 (0) | 2024.01.25 |