+1 -1 구현을 useState로 상태관리한다는 걸 공부했어.
코드는 이러해
number을 state 초기값을 0으로 세팅하고 setNumber로 이걸 +1 -1하면서 숫자를 바꾸는거야.... 암튼 그런건데...
버튼이 클릭될때마다 함수가 호출해서 재랜더링 하는데, 그러려면 이전 넘버값을 알아야 그 값에서 +1을 하거나 -1을 해줄 수 있을거 아냐?
그걸 useState로 어떻게 구현했는가?에 대해 궁금하드라구....
나는 리액트에서 당연히 그걸 클로저 개념으로 상태를 저장하고 있을줄 알았어. 아래 코드처럼 말이야...
암튼 이렇게 나름의 추론을 하고 내 뇌피셜이 맞는지 검증하기 위해 한번 구글에 찾아봤어
그런데 리액트에서 useState는 함수 바깥에 1) state와 2) state를 수정하는 set함수(=setter)를 각각의 배열에 저장하는 식으로 구현을 했드라구?
예컨대 성과 이름 useState들이 있는데, 이거를 js코드로 쓰면..
이렇게 전역에 state와 setter배열이 있는거야.
저
1. const [firstName, setFirstName] = useState("Rudi"); // cursor: 0
2. const [lastName, setLastName] = useState("Yardley"); // cursor: 1
두 useState훅을 실행하면
state = [Rudi, Yardley]
setter = [setFirstName, setLastName]
이렇게 배열에 들어가고..
버튼을 click하면,
성을 수정하면 state[0] = "수정된 성"
이름을 수정하면 state[1] = "수정된 이름"
이렇게 배열의 인덱스로 state를 변경해주는거야...
근데 일단 나는 저걸
https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e
이 외국문서에서 봤는데, 훔..... 막상 구글에 한글문서들 보면 내가 원래 생각한 방식대로 클로저로 useState를 구현한다고 막 글이 있기도 하고...
암튼 좀 더 찾아봐야 할거같아...
지금 내가 추론한거로는, setter함수에서 각 state를 클로저로 초기값 세팅 + 값 수정을 하는거 같은데, 일단 이건 내 뇌피셜이니까..
좀 더 양키들이 작성한 다른 문서들을 보면서 나의 뇌피셜이 맞는지 확인해야겟어...
암튼 useState는 배열일 뿐이다! 라는 시각이 진자루 신기햇다. 뭔가 좀 시각이 늘어난거 같구.... 암튼 그래......
저 위의 문서는 이번에 한번 번역해보려구! 암튼 진자루 좋은 글이었다...
다들 시간 있으면 한번 읽어보는거 추천해! 그 이유는? 저 글에는 내가 개똥같이 말한 거를 그림으로 잘 설명해주거든...
그리고 사족이지만 오늘 마라탕 먹었는데 ㅈㄴ 마라소스 땜에 속이 안좋다
그래두 진자루 맛잇는거 같아 ^~~~^
나는 숙주 + 청경채를 진자루 좋아해서 숙주 + 청경채만 5000원어치 넣어 먹엇어!!!!!! 당면은 별로 안 좋아하구 면 대신 숙주를 넣어 먹는 편이야 ^~~^ 그리구 건두부도 진자루 맛잇다 ^~~~^ 근데 먹으면 속이 나빠져서 ... ;ㅅ; 이제 한 달 후에 먹으려구..
https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e
본문의
링크는 이거구, 일단 신기해서 한번 적어봤어...정말루 조은 글이니 한번 똥쌀때 보는것두 조을거같아..
해당 댓글은 삭제되었습니다.
헉 나 오늘 이거 하나만 공부했는데..! 그래두 그렇게 말해줘서 고마워 헤헤 근데 내가 인터페이스 이런걸 잘 몰라서 그러는데 어떤 의미인지 좀 더 설명해줄수있을까..!?
저 밑에 누가 링크 올렸던데 저거 참고해보는것두 좋을듯..! 나두 지금 읽는중이야! ^0^
ㅠㅠ... 진자루 많이 어려운거같아.. 저거 아래 어떤 친구가 올려준 링크 보는데 아직 내 수준으로는 못 이해해서..... 그냥 노션에 나중에 리액트 잘한 다음 읽을 문서로 정리해두엇당...ㅋㅋㅋ 저 배열을 리액트는 어디에 저장하느냐.. 그걸 꼭 나중에 이해하고 말겟다,,!!
오호........ 너 말을 들으니 왜 전역으로 쓴건지 알거같네.. 클로저는 전역변수처럼 쓰기 위한다... 오오....................... ㄳㄳ.......
똥쌀때마다 실력 업글됨?
마라탕땜에 똥 1시간쯤 쌀거같아서 그 시간이면 업글될듯
https://goidle.github.io/react/in-depth-react-hooks_1/
오오오 고마워!!!!!!!!!!! 한번 읽어볼게!
5만원 입금 ㄱ
너 5만원 만날 이야기 하던 애구나 ;ㅅ; !!!!!!
나 궁금한게 두번째사진에서 왜 prevNumber써야해?? 그냥 (number+1)해주면 안돼?
그리고 저거 prevNumber은.. 내가 저거 그냥 남의 코드 배껴온거긴한데, onIncrease() { setNumber(prevNum) { prevNum = prevNum + 1 } } 이고, 저기서 인자는 현재 number을 받는다고 해석하면 될거같은데... 이게 내가 리액트에서 setter함수(=여기서는 setNumber) 가 어떻게 작동하는지 잘 모르겠어서 설명하기가 힘드네 ㅠ..
number=>number+1은 이전값(number)에 +1해준다는거고 number+1은 state에 저장되있는 number에 그냥 +1해준다는 차이점이지??
난 그렇게 이해햇어!!!