| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- math
- AWS EBS
- 객체에서 value만 가져오기
- 배열 중복 개수 구하기
- AWS
- 삼항연산자
- 맥에서 MSSQL
- reduce
- 프로그래머스
- fill
- map
- Filter
- 레벨1
- 이벤트 중복 발생 현상
- +연산자
- 자바스크립트
- DB 백업 파일 복원
- max
- indexof
- 리액트
- iscomposing
- fluent-ffmpeg
- 썸네일 생성
- mssql
- 레벨2
- array
- substr
- sort
- Azure Data Studio
- MIN
- Today
- Total
3은로그
React 기본 - 간단한 일기장 프로젝트 1 본문
프로젝트 생성
1. 바탕화면에 diary 폴더 생성

2. vscode에서 diary 폴더 열기

3. 터미널창 열어서 npx create-react-app 프로젝트 이름으로 프로젝트 생성

4. diary 폴더가 두개 생겼기 때문에 안에 있는 diary 폴더를 밖으로 빼준다.


5. 안쓰는 파일 삭제 및 삭제 된 파일과 관련된 import들 삭제

표시된 것들 삭제하고 필요없는 import들도 삭제
프로젝트 시작
● 목표

1. DiaryEditor.js 컴포넌트 생성

2. DiaryEditor 컴포넌트를 화면에 랜더시키기 위해서 App.js에 DiaryEditor를 자식요소로 배치시켜준다.

● 작성자 input 만들기


- 작성자는 상태로 관리한다.
- onChange 함수는 input 태그에 글자가 입력될 때마다 실행되며 e라는 매개변수를 넘겨주는데 이때 e.target.value가 입력된 값이다.
- setAuthor(e.targer.value)로 입력될 때마다 상태를 업데이트 시킨다.
● 내용 input 만들기


- 방법은 작성자 input 만든 것처럼 하면 된다.
- input태그 대신 textarea를 쓴다는 것만 다르다.
● author와 content state를 같이 관리하기

- 상태를 객체로 같이 관리한다.

- input태그의 value는 state.author이다
- setState는 새로운 객체를 만들어서 전달한다
- author은 새로 입력된 값으로 바뀌어야하기 때문에 e.target.value로
- content의 내용은 바뀌면 안되기 때문에 원래 값인 state.content로 만들어서 전달

- 위 내용과 같다.
But...
이런 방식을 이용하면 관리해야 될 state가 많아질수록 쓸데없이 코드가 길어지게 된다.
왜냐면 하나의 state를 바꾸려면 setState({~~~~~~~~}) 이런식으로 나머지 state들도 다 전달해야하기 때문이다.
이럴때는 스프레드 연산자를 이용해서 코드를 줄일 수 있다.

- 이런 방식으로 사용하면 된다.
- 순서가 중요하다
- 반드시 원래 있던 state를 펼쳐주고 나서 변경하고자 하는 state의 값을 전달해야한다.
● 중복되는 onChange 합치기

- handleChangeState 함수를 만든다.
- 이벤트 객체 e를 받아서 [e.target.name] : e.target.value로 바뀐 값에 해당하는 state를 변경한다.

- input 태그와 textarea 태그에 각각 이름을 만든다.
- onChange에 이벤트 핸들러 함수인 hanldeChangeState를 부른다.
● 감정점수 표현 만들기


- emotion이라는 state 생성
- 초기값은 1

- 위에서 한 방식과 같다.
- name을 state의 이름과 똑같이 emotion이라고 한다.
- value는 state의 emotion 값이다.
- 이벤트가 발생하면 handleChangeState 함수를 호출한다.
다시 정리하자면,,,

- select 태그에서 이벤트가 발생하면 즉 option이 바뀌면 handleChangeState 함수가 호출된다.
① handleChangeState 함수 호출
● e.target.name은 emotion
● e.target.value은 바뀐 값이다
따라서
② emotion state가 바뀐 값으로 변경된다.
③ select 태그의 value값이 바뀐 값으로 다시 업데이트 된다.
● 저장 버튼 만들기

- 버튼을 만든다.
- 버튼 클릭하면 handleSubmit 함수 호출

- 콘솔에 state 출력하고
- 성공 알림창 띄우기

● 디자인

App.css

다음은 유효성 검사를 할 예정
끝!!
'React' 카테고리의 다른 글
| [React + TypeScript] 한글 입력시 onKeyDown 이벤트 중복 발생 현상 (0) | 2024.04.27 |
|---|---|
| React 기본 - 간단한 일기장 프로젝트 2 (useRef) (0) | 2023.02.10 |
| React 기초 - Props (0) | 2023.01.31 |
| React.js 기초 - State (0) | 2023.01.31 |