React
state 지연 초기화
*히아*
2023. 8. 1. 10:02
React에서 state 지연 초기화란?
useState에 초기값을 전달할 때 해당 값을 항상 생성되지만 react는 첫 번째 렌더에만 그 값을 사용한다. 문자열을 초기값으로 전달할 때 등과 같은 경우에는 문제가되지 않지만 state를 복잡한 값으로 초기화할 필요가 있다. 그런 상황에서 useState의 초기값 자리에 함수를 전달할 수 있따. 그러면 react는 컴포넌트가 마운트 됐을 때만 함수를 호출한다!!
투두리스트를 작성할 때 아래와 같이 연산을 통한 state 초기 값을 주었다.
const [todoList, setTodoList] = useState<ITodo[]>(
JSON.parse(localStorage.getItem("todolist") ?? "[]"),
);
지금은 그렇게 엄청 복잡한 연산은 아니지만 더 복잡한 연산을 하게 될 경우 컴포넌트 렌더링 시 매번 실행하게 된다.
const [todoList, setTodoList] = useState<ITodo[]>(
() => JSON.parse(localStorage.getItem("todolist") ?? "[]"),
);
이렇게 콜백으로 넘겨주어 최초에 한 번만(함수가 마운트 됐을 때 한 번만) 실행하게 만들어줄 수 있다.