위 코드에서 (지역변수 a는 테스트용으로 넣은거라 무시) useState를 참조하는 배열의element counter가 render시마다 초기화되지 않는 이유가 뭐임?
const로 함수 내부에서 선언했으면 render될 때마다 default값인 0으로 바뀌어야 정상같은데 정확히 어떤 방식으로 동작하는지 아는 사람있나??
위 코드에서 (지역변수 a는 테스트용으로 넣은거라 무시) useState를 참조하는 배열의element counter가 render시마다 초기화되지 않는 이유가 뭐임?
const로 함수 내부에서 선언했으면 render될 때마다 default값인 0으로 바뀌어야 정상같은데 정확히 어떤 방식으로 동작하는지 아는 사람있나??
https://github.com/reactjs/reactjs.org/blob/main/content/docs/hooks-state.md
Closure 관련 데이터처리 원리로 작동하는듯. innerFunc가 외부 변수 값을 기억하는데 useState가 이런식으로 작동한다고 이해하면 될까
근데 useState마다 각자의 _value값을 가지고 있을텐데 함수 안에서 const로 다시 선언하면 같은 useState를 사용한다는 것을 어떻게 확신하지? useState의 value가 undefined인지 확인한 후에 처음 랜더시에만 할당하는걸로 아는데, 전역으로 선언한게 아닌데 어떻게 반환되는거지;;;
그래서 훅 갯수 달라지면 고장남 구현이 생각보다 안이쁘게 돼있음
훅 갯수가 달라진다는게 무슨 말인지 물어보는걸 물어봐도됨?
리액트에서 렌더링마다 훅 갯수 달라지면 지랄하잖아음
그냥 갯수로 때려맞추는거라 의도적으로 고장낼 수 있음
const [t, tt] = useState(false); if (t) { const [x] = useState(0); const [y] = useState(""); console.log({ x, y }, 0); } else { const [y] = useState(""); const [x] = useState(0); console.log({ x, y }, 1); }위코드 말고 이렇게 해야할듯 t 값 버튼같은걸로 바꾸면서 보면 x랑 y가 뒤바뀌어있음
렌더러에서는 state 훅이 2개 호출됐다는 것을 처음에 기억해놓고 그 순서대로 넣어주는거라 조건문으로 순서만 바꿔주면 x y가 섞임
const 선언한 순서대로 리액트에서 불러오는거임? 왤케 벙신같지...