TechScribe Notes
[코딩애플;React] State 본문
1.State 란
:리액트 컴포넌트의 상태, 변경가능한 데이터
-랜더링이나 데이터 흐름에 사용되는 값만 state에 포함시켜야함
2.state만드는 법
1)맨 위에 아래 코드 한 줄 작성
2)useState('보관할 자료') 로 작성하여 자료를 잠시 저장하거나
만약에 나중에 저장한 자료를 사용하고 싶으면
let [a,b] = useState('사용할 자료') 로 적을 수 있음. a,b는 자유롭게 작명 가능
a는 현재 자료를 담고있는 변수명, b는 나중에 state에 담은 자료를 변경하고 싶을 때 사용함(변경을 도와주는 함수)
state는 직접적으로 자료 변경할 수 없다.
자바스크립트 destructuring문법
:배열 안에 잇는 데이터를 변수로 쉽게 저장하고 싶을 때 사용하는 문법.
이렇게 쓸 수 있는 것을
이런식으로 더 간편하게 사용할 수 있음
이렇게 작성한 state로 데이터 바인딩도 가능함.
(retrun안에 가장 큰 div는 병렬구조로 작성할 수 없음)
3.state를 사용하는 이유 :
state는 변동사항이 생기면 state를 쓰는 html도 자동으로 랜더링 해줌.
-변경이 자주 일어날 것 같은 데이터는 state로 해두면 좋다.
📚숙제
배열로 데이터 저장 후 데이터 바인딩 해보기
4.state변경함수 사용하기(좋아요 버튼 구현해보기)
-우선 state를 설정
state값을 바로 변경할 수 없고 state 선언할 때의 변경함수를 사용하여 작성해야 한다.
안그러면 html재랜더링이 되지 않는다.
-변경함수(새로운state 값)
*JSX에서 onClick사용하는 방법
HTML에는 <div onClick ='실행할 자바스크립트 내용'>으로 작성했지만
JSX에는 <div onClick ={실행할 함수}> 로 작성해야함.
나의 실수들
이렇게 하면 에러가 뜸
단순하게 이렇게 해버리면 문자열(이것도 유사 배열객체)이 하나씩 리스트에 데이터바인딩 되어버림

5.배열, 객체 state 변경하는 방법.
위의 방법보다 더 편리한 방법으로 배열, 객체를 변경하는 방법.
위의 방법은 자료값이 많아지면 가독성이 떨어지는 코드를 작성하게 된다.
*배열이나 객체 자료를 다룰 때는 원본데이터를 직접 조작하는 것보다 기존값을 보존해주는식으로 복사하여 사용한다.
6.state변경함수 동작 원리
-state변경함수는 기존 state === 신규 state이면 변경해주지 않는다.
-let arr = [1,2,3]이런 식으로 기존 배열이 있다고 치면, 이 자료는 램에 저장되고 어디에 있는지 메모리주소값만 가지고 있다.
-만약에 배열을 복사하면, 변수명이 다르다고 해도 각각 자료를 별개로 저장하지 않고 같은 값을 공유한다.
예를 들어 이렇게 되면 data1에서 변경되면 data2에서도 변경되어 버린다.
그래서
이런 식으로 작성하게 되면 copy와 기존 글제목의 자료가 같다고 생각하여 변경해주지 않는다.
위의 방법으로 전개연산자를 사용하여 독립적인 카피본을 만들어서 수정하는 것이 더 좋음!
📚가나다 순으로 글제목 나열하는 버튼 만들기
'프론트엔드 > React' 카테고리의 다른 글
[코딩애플;React]props (1) | 2024.01.10 |
---|---|
[코딩애플;React]컴포넌트/ map (0) | 2024.01.09 |
[코딩애플;React]리액트...그거 왜 쓰는데..?/리액트 설치와 개발환경 셋팅/JSX 필수 문법 3가지 (0) | 2023.12.29 |
[React 기초] state, props, Hook (0) | 2022.01.16 |
[React 기초] 컴포넌트 (0) | 2022.01.12 |