티스토리 뷰
[!이시중] 2021년 10월 28일 21:55에 최초 작성된 글로써 원글은 https://yuniel.tistory.com/43 에서 확인할 수 있음.
뷰쟁이가 react를 처음 맞이하고 가장 적응이 안 되었던 부분은 바로 변수의 선언이다. 우선 react hook에서는 useState를 통하여 변수를 선언하고, 초기화시키고, 변형시킬 수 있다. 물론 흔히 아는 방식처럼
const test = ‘테스트입니다’;
라는 식으로도 선언과 초기화를 시킬 수 있지만, 이는 변형시킬 수 없다는 문제가 있다. 뒤의 글을 읽으면 자연스레 이해하게 되리라.
먼저 useState를 쓰는 형식이 있다.
const [ 변수명, 변수정의함수 ] = useState(기본값);
const [ count, setCount ] = useState(0);
즉, count + 1을 하기 위하여 반드시
<Button
onClick={() => setCount(count + 1)}
>
</Button>
다음과 같은 형식으로 써야만 인식한다.
이는 회원가입과 같은 input을 사용할 때, vue와는 아주 큰 차이를 보인다. 다음과 같은 변수를 선언한 후, input에서 그 값을 받는다고 가정해보자.
const inputText = '';
뷰의 경우
<input v-model='inputText' />
와 같이 작성하지만
리액트의 경우
<input onChange={(value) => setInputText(value);} />
로 반드시 useState의 형식으로 선언해 준 후, 사용하여야 값을 변경시킬 수 있다.
왜 이렇게 진행하는걸까? 여기서 우리는 '바인딩'을 간단하게 알아봐야 한다.
양방향 데이터 2 way binding을 가지고 있는 뷰는
input <-------> watcher <-------> data |
다음과 같이 watcher가 input을 감지해 data의 변화를 적용해준다.
보통의 단방향 데이터 1 way binding은
data -----> watcher -----> input -----> event -----> data |
의 프로세스를 거치게 되어 event 과정이 있어야지만 data에 적용을 한다.
하여 데이터를 변경시키기 위해서 event 즉 useState의 변수 정의 함수가 필요한 것이다.
'JavaScript > react' 카테고리의 다른 글
react useMemo와 useCallback은 다르다구요! (0) | 2022.03.31 |
---|---|
[뷰쟁이의 리액트 시작하기] react useEffect로 랜더링 상태 관리하자 (0) | 2022.03.31 |
리액트 라우터를 통하여 공통 레이아웃 설정하기 (0) | 2022.03.10 |
react router 설정하기 (0) | 2022.03.09 |
리액트 공부 이렇게 하세요! - best github react (0) | 2022.03.09 |
- Total
- Today
- Yesterday
- CSS
- vue
- Git
- 리액트
- 모바일사파리
- 리액트훅
- TIL
- js테스트
- reacthook
- 깃명령어
- frontend
- 프론트앤드
- js
- storybookUI
- 크롬
- gitRebase
- 리액트상태관리
- 센트리
- 프론트엔드
- BFCache
- 김민태
- 리코일
- 센트리모니터링
- 깃
- 자바스크립트
- javascript
- react
- sentry
- 사파리
- npm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |