저장된 todos 파싱
localStorage 값이 있으면 JSON으로 복원하고, 실패하면 빈 배열로 시작합니다.
Todo 목록처럼 로컬 스토리지에서 복원해야 하는 상태는 렌더마다 읽지 않고 세 번째 인자인 init에서 시작값을 만들 수 있습니다.
localStorage 값이 있으면 JSON으로 복원하고, 실패하면 빈 배열로 시작합니다.
컴포넌트는 상태 목록과 액션을 보내는 dispatch만 받아 렌더링합니다.
reducer가 기존 배열을 복사하고 새 id와 text를 가진 객체를 붙입니다.
선택된 id만 새 객체로 바꾸고 나머지 todo는 그대로 유지합니다.