일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 책알남
- 주식
- 경제
- 독서
- 독후감
- 지혜를가진흑곰
- 프로그래머스 알고리즘 공부
- 서평
- algorithmStudy
- 화장품
- 다독
- 알고리즘공부
- 돈
- 자바스크립트
- 채권
- algorithmTest
- 백준알고리즘
- C++
- 알고리즘트레이닝
- 프로그래밍언어
- 재테크
- 자바
- 투자
- C
- 성분
- algorithmtraining
- JavaScript
- Java
- 알고리즘 공부
- 책을알려주는남자
Archives
- Today
- Total
탁월함은 어떻게 나오는가?
스케줄 관리(투두리스트-todolist) 리액트로 만들어보기 본문
반응형
스케줄을 관리할 수 있는 투두리스트를 리액트로 만들어봤다.
테스크를 추가하고 일정목록에서 완료와 미완료를 구분할 수 있으며, 완료와 미완료들을 따로 볼 수 있게 구현해놨다.
추가적으로 해당하는 단어가 검색이 되는 기능도 추가되어있다.
코드 :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
import React, { useRef, useState } from "react";
import { Button, Input } from "semantic-ui-react";
const Board = () => {
const [completion, setCompletion] = useState(false);
const [inputText, setInputText] = useState({
content: "",
keyword: "",
});
const { content, keyword } = inputText;
const handleInput = (e) => {
setInputText({ ...inputText, [e.target.name]: e.target.value });
};
const [contentArr, setContentArr] = useState([]);
const [check, setCheck] = useState(false);
const arrId = useRef(0);
const addValue = (e) => {
const contentState = {
id: arrId.current,
value: content,
done: false,
};
setContentArr([...contentArr, contentState]);
setInputText({ ...inputText, [e.target.name]: "" });
arrId.current += 1;
};
const deleteArr = (index) => {
contentArr.splice(index, 1);
setContentArr((contentArr) => [...contentArr]);
};
const checkBox = (e, index) => {
const contentState = {
id: index,
value: contentArr[index].value,
done: e.target.checked === true ? true : false,
};
contentArr.splice(index, 1, contentState);
setCheck(!check);
};
return (
<>
<Input
type="text"
name="keyword"
value={keyword}
onChange={handleInput}
placeholder="검색 키워드를 입력하세요."
/>
<hr align="left" width="25%" />
<div>
<b>일정 목록</b> ㅤㅤㅤㅤ완료 목록만 보기
<input type="checkbox" onChange={() => setCompletion(!completion)} />
</div>
{completion ? (
<>
{contentArr.filter((element) => element.value).length === 0 ? (
<p>등록된 일정이 없습니다.</p>
) : (
<>
{contentArr
.filter((element) => {
if (keyword === "") {
return element.value;
} else if (element.value.includes(keyword)) {
return element.value;
}
})
.map((element, index) => {
return (
<>
{element.done ? (
<ul>
<input
type="checkbox"
checked="true"
onChange={(e) => checkBox(e, index)}
/>
{element.value}
<Button onClick={() => deleteArr(index)}>삭제</Button>
</ul>
) : (
""
)}
</>
);
})}
</>
)}
</>
) : (
<>
{contentArr.filter((element) => element.value).length === 0 ? (
<p>등록된 일정이 없습니다.</p>
) : (
<>
{contentArr
.filter((element) => {
if (keyword === "") {
return element.value;
} else if (element.value.includes(keyword)) {
return element.value;
}
})
.map((element, index) => {
return (
<>
{element.done ? (
""
) : (
<ul>
<input
type="checkbox"
onChange={(e) => checkBox(e, index)}
/>
{element.value}
<Button onClick={() => deleteArr(index)}>삭제</Button>
</ul>
)}
</>
);
})}
</>
)}
</>
)}
<hr align="left" width="25%" />
<Input
type="text"
name="content"
value={content}
placeholder="테스크명을 입력하세요."
onChange={handleInput}
/>
<Button name="content" onClick={addValue}>
추가
</Button>
</>
);
};
export default Board;
|
cs |
깃 주소 :
반응형
'[Snow-ball]프로그래밍(컴퓨터) > 미니앱' 카테고리의 다른 글
셀렉트박스(Select-box)로 스택-큐(Stack-Queue) 변경 가능한 앱 리액트로 만들기 (0) | 2022.03.02 |
---|
Comments