티스토리 뷰
useState를 이용하여 배열 변수를 처리하는 방법에 대해서 공부
useState를 이용하여 배열을 선언하고
해당 배열에 input text 에서 입력한 값을 하나씩 추가하여 넣는 방법으로 TO DO 리스트가 화면에 출력되도록 처리해본다.
...배열명
setToDos((currentArray) => [toDo, ...currentArray]);
* setToDos 와 같이 변경 함수에는 변수 및 함수를 파라미터로 지정할 수 있다.
현재 배열의 맨 앞 요소에 새로운 item(값)을 push
import { useState, useEffect } from "react";
function App() {
const [toDo, setToDo] = useState("");
const [toDos, setToDos] = useState([]);
const onChange = (event) => setToDo(event.target.value);
const onSubmit = (event) => {
event.preventDefault();
if(toDo === "") {
return;
}
// 현재 배열에 입력한 값을 1개 추가하여
// 새로운 배열을 생성
setToDos((currentArray) => [toDo, ...currentArray]);
setToDo("");
};
console.log(toDos);
return (
<div>
<h1>My To Dos ({toDos.length})</h1>
<form onSubmit={onSubmit}>
<input onChange={onChange} value={toDo} type="text" placeholder="Write your to do..." />
<button>Add To Do</button>
</form>
</div>
);
}
export default App;
[ map ]
배열의 요소만큼 반복하여 특정 이벤트를 처리하기 위해 사용
arr.map((item) => console.log(item))
배열의 요소를 1개씩 콘솔로 출력한다.
import { useState, useEffect } from "react";
function App() {
const [toDo, setToDo] = useState("");
const [toDos, setToDos] = useState([]);
const onChange = (event) => setToDo(event.target.value);
const onSubmit = (event) => {
event.preventDefault();
if(toDo === "") {
return;
}
// 현재 배열에 입력한 값을 1개 추가하여
// 새로운 배열을 생성
setToDos((currentArray) => [...currentArray, toDo]);
setToDo("");
};
console.log(toDos);
return (
<div>
<h1>My To Dos ({toDos.length})</h1>
<form onSubmit={onSubmit}>
<input onChange={onChange} value={toDo} type="text" placeholder="Write your to do..." />
<button>Add To Do</button>
</form>
<hr />
{toDos.map((item, index) => (
<li key={index}>{item}</li>
))}
</div>
);
}
export default App;
'리액트 스터디' 카테고리의 다른 글
[React] 12. 리액트 스터디 - react router (0) | 2023.01.05 |
---|---|
[React] 11. 리액트 스터디 - fetch (0) | 2023.01.04 |
[React] 9. 리액트 스터디 - effect (0) | 2023.01.03 |
[React] 8. 리액트 스터디 - module css (0) | 2023.01.03 |
[React] 7. 리액트 스터디 - Props / memo / PropTypes (0) | 2023.01.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로젝트
- 태복
- 수정사항
- 신입
- 1주차끝
- 리액트스터디
- 리액트오류
- 깃헙배포
- 게시판구현
- 신입사원태복
- 스프링
- 신입사원태복이
- 권한분리
- 프로젝트연습
- java
- 공통스크립트
- centOS7
- 처음시작은어색할지도몰라
- 세션
- 장바구니
- gitlab삭제
- 리액트
- BCryptPasswordEncoder
- springboot
- Oracle
- 스터디
- 스프링시큐리티
- 스프링프로젝트
- 메이븐설정
- 로그인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함