REACT

useState 자세하게 알아보기

gurwhddl 2023. 1. 11. 16:40

원래 js에서는 변수 값만 바꾼다고 뭐가 되지 않음 - 화면도 바꿔줘야 웹 상에서도 바뀐 값이 적용이 됨

react를 이용하면 값만 바꿔주면 됨

값을 바꾸고 - 렌더링을 다시 해주면 됨

이렇게 하면 바뀐 값만 렌더링이 되는데 이것보다 더 쉽게 하는 법이 useState

let A = React.useState( ) 

console.log(A) // [undefined,f(함수가 들어감)]

데이터는 A[0] , 데이터 바꾸는건 A[1] 이렇게 사용해도 되지만 귀찮기 때문에

let [a,b] = [1,2] 하면 a = 1 , b = 2 되는것처럼 [데이터 변수명,데이터 바꿀때 쓰는함수] = React.useState(데이터값) 해주면 됨

let [A,setA] = React.useState(0) 하면 A = 0 이 되고

const onClick = () => {

counter ++ }

해서 이벤트리스너 붙여놓으면 클릭할때마다 1씩 증가하는 변수로 지정이 됨 - 하지만 앞에서 썼던거랑 마찬가지로 렌더링을 다시 해줘야 화면의 값이 바뀜

직접 리렌더링 안해줘도 저 setA라는 함수를 사용하면 알아서 재렌더링을 해줌

setA(1) 하면 A는 1로 바뀌고 이 함수가 재렌더링까지 해주기 때문에 화면도 알아서 바뀜

setA(A + 1) 이렇게 하면 위의 onClick 함수와 동일한 기능 + 렌더링까지 알아서 해줌

setA를 쓰게 되면 새로운 값을 가지고 컴포넌트 전체가 재렌더링이 일어나면서 화면이 바뀌게됨

- 변수의 값을 바꿔준 뒤 function 안의 모든 코드(return도 포함)가 다 재실행된다고 생각하면 됨 

*state값이 바뀌면 => 새로운 값을 가지고 렌더링이 다시 일어난다 


useState의 함수를 이용해서 값을 바꿀 때 클릭할때마다 1씩 증가하게 만들고 싶으면

기존 데이터값 + 1 하는 함수를 만들어야됨

그런데 이렇게 하면 저 click값에 오류가 생길수 있음

이럴때 setClick((기존값) => 기존값 + 1) 하게되면 안전하게 변경 가능 

- 저 setClick이라는 함수의 인자에 기존값(바꾸기 전의 click값)이 저장되어 있다고 생각하면 됨 - return값으로 해당 state값을 바꿔주는 거기 때문에 return값을 원하는 걸로 설정해주면 됨