동작원리
기존 State와 신규 State를 비교,
같을 경우 변경 안 함
array/object State
의 경우,
reference data type
이기 때문에
State 변경시 유의⚠️
그래서
state
를 변경할 때, 기존state
와주소
가 달라져야 함
➡️ array/object를 새로 만들어야 한다는 뜻
새로 만들려면 일단 복사를 해야된다, 그런데
let copy = [...array];
Spread operator (전개연산자)
array/object 에 특정 인덱스의 값을 변경해도, 재렌더링이 되지 않음
➡️State로 설정해둔 값
이 array/object의주소
이기 때문
따로
독립적 복사본
을 만들어서 수정, 변경해야함✅
변경한 복사본으로 다시
setState
html 덩어리
를 묶어서 하나로 축약
시켜 만드는 문법코드 이해하기 쉽고, 재사용성 좋을 듯👀
function
만들기return()
안에 html
담기하나의 태그에 감싸져 있어야 함
<컴포넌트명></컴포넌트명>
<컴포넌트명/>
function 밖
에 만들고,영어대문자
로 시작해야함const Component = () => {
return (
<>
<div>
이런 식으로 작성
</div>
</>
)
}
import App from './App';
으로 import
하나의 태그로 감싸져 있어야 해서 div로 감쌌는데, 실제로는 의미없잖아
<> </>
이렇게 간단하게 표기하면 된다
➡️Fragments
문법
너무 남발하면 안 좋음
state를 가져다쓸 때 문제가 생김
state 관리하기 힘들어😒
html css로 미리 디자인 완성
UI의 현재 상태를 state로 저장
➡️ 자료형 상관없이 상태를 표현할 수 있기만 하면 됨
ex) 0, 1, true, false, '열림', '닫힘', ...
state에 따라 UI가 어떻게 보일지 작성
조건문
과 같은 방식으로 작성- 근데
return()
영역 안은html
이 들어가는 부분이라,
if
나for
와 같은 JavaScript 코드를 작성할 수 없음⚠️- 그래서 ➡️
중괄호{ }
에삼항연산자 (ternary operator)
를 사용{ 조건식 ? 참일 때 실행할 코드 : 거짓일 때 실행할 코드 }
null
은비어있는 html
으로 자주 사용
있을 때만 보여주도록{ state == true ? <Component/> : null }
버튼을 눌러 동적으로 UI를 변경할 때,
기존 JavaScript 방식은 버튼 누르면
html을 직접
변경
React
에서는 버튼 누르면state만
변경
➡️ 스위치 같은 느낌
😍😍