더보기
몇 주차 회고록인지 까먹었다. 리액트는 순수 자바스크립트랑은 비슷하면서도 다른 느낌이다.
그래서 더 기존 자바스크립트 개념이 흔들려서는 안 되겠다고 생각했다.
클래스형 컴포넌트는 잘 사용하지 않지만, 알아두면 좋을 것 같다. 계속 함수형 컴포넌트만 사용하다가 클래스형 컴포넌트를 마주했을 때, 어색하지 않을 정도로만 익혀두자!
state
- React에서 앱의 유동적인 데이터를 다루기 위한 개체
- 컴포넌트 내에서 지속적으로 변하는 특정 값을 관리하기 위해 사용
- state가 변경될 경우 자동으로 재랜더링
state 사용
- state의 값을 변경하기 위해서는 반드시 setState 함수를 사용.
- state 값을 임의로 변경X, setState 함수를 이용해서 값을 변경!!
- setState 내에 변경할 값 넣기
- setState에 함수 넣기
import { useState } from 'react';
function FunctionComponent() {
// const [value, setValue] = useState(초기값);
const [counter, setcounter] = useState(0);
// 1. setState 내에 변경할 값 넣기
setCounter(count+1);
// 2. setState에 함수 넣기
setCount ((num) => {
return num + 1
}
return (
<>
</>
);
}
props
- 부모 컴포넌트에서 자식 컴포넌트에 데이터 전달 시 사용 (읽기 모드)
- react는 단방향 데이터 흐름!!
- 변경하고 싶으면 새로운 변수 생성하고 props 값을 복제해서 사용!
Dom Element의 Attributes
(나중에 더 자세하게 정리)
- 기본적인 Dom Element(div, span) 들의 Attribute는 camel case로 작성
- ex) tabIndex, className 등
- 'data- ' 또는 'aria-' 로 시작하는 Attribute는 제외
- ex) data-type, aria-label 등
- HTML의 Attribute와 다른 이름을 가지는 Attribute가 있다.
- class → className, for → htmlFor 등
- HTML의 Attribute와 다른 동작 방식을 가진 Attribute가 있다.
- checked → defaultChecked
- value → defaultValue
- style은 객체 형태로 작성
- React에서만 쓰이는 새로운 Attribute가 있다.
- key
- react가 어떤 항목을 변경, 추가, 삭제하는 작업을 도움
- 엘리먼트가 안정적인 고유성을 부여하기 위해 배열 내부의 Element에 지정
- 배열 안, 형제 사이에서 고유해야 하고 전체 범위에서 고유할 필요는 없음.
- 두 개의 다른 배열을 만들 때, 동일한 key 사용 가능
- dangerouslySetInnerHTML(문자를 html으로 변경할 때 사용, 사용 잘 안 함)
- key
state vs prop 정리
state | prop | |
특징 | 일반 자바스크립트 객체 | |
컴포넌트 내부 선언, 내부에서 값 변경 (저장) | 부모 컴포넌트에서 자식 컴포넌트에 데이터 전달 | |
앱의 유동적 데이터 다루는 객체 | 한 번 설정되면 변경X | |
이벤트 핸들러는 일반적으로 state 를 업데이트 | 상위 컴포넌트는 하위 컴포넌트에 대한 props 설정 |
클래스형 컴포넌트 state 코드
- 클래스형 이제 잘 안 쓴다.
- npm start 전에 App.js에서 클래스 import 했는지 까먹지 말기!
import React from "react";
class ClassComponent2 extends React.Component{
// state 오브젝트
state = {
counter:0,
}
up = () =>{
this.setState({counter : this.state.counter+2})
}
render (){
//객체 구조 분해 할당
const {counter}= this.state;
return(
<>
<h5>{counter}</h5>
<button onClick={this.up}>+2</button>
</>
)
}
}
export default ClassComponent2;
함수형 컴포넌트 useState() 코드
- 원래 없었다. react 16.8 버전 이후부터 useState 함수가 생겼고, 이를 통해 함수형 컴포넌트에서도 state를 사용하게 되었다.
- useState 함수의 인자에는 상태의초기값
- useState의 초기값은 숫자, 문자, 배열으로 값의 형태가 자유로움
- 첫 번째 원소 : 현재 상태
- 두 번째 원소 : 상태를 바꿔주는 setter 함수
import { useState } from 'react';
function FunctionComponent2() {
const [counter, setCounter] = useState(10);
const down = () => {
setCounter(counter - 1);
};
return (
<>
<h5>{counter}</h5>
<button onClick={down}>-1</button>
</>
);
}
export default FunctionComponent2;
더보기
https://lakelouise.tistory.com/260
[React] 리액트 State란?
🎯 리액트 State란? import { useState } from 'react'; function Example() { const [count, setCount] = useState(0); return ( 버튼을 {count}번 눌렀습니다. setCount(count + 1)}>클릭 ); } State는 컴포넌트 내에서 지속적으로 변경이
lakelouise.tistory.com
https://onlyfor-me-blog.tistory.com/463
[React] State란?
리액트 공부 중 State와 Prop이라는 걸 알게 됐는데 중요한 키워드 같아서 state 먼저 확인한 다음 포스팅한다. 먼저 공식문서에선 뭐라고 설명하는지 확인해봤다. https://ko.reactjs.org/docs/faq-state.html
onlyfor-me-blog.tistory.com
'[Study] FE > React' 카테고리의 다른 글
[React] 타이머 컴포넌트 만들기 (0) | 2023.05.18 |
---|---|
React와 Node.js 로 만든 Todo List Mini Project 회고록 (0) | 2023.05.06 |
[포스코x코딩온] React 04 Map () & filter() (0) | 2023.04.23 |
[포스코x코딩온] React 03 Event Handling (0) | 2023.04.23 |
[포스코x코딩온] React 01 특징 및 설치 (0) | 2023.04.20 |