더북(TheBook)

이 코드에서는 todosStorage라는 객체를 만들어 해당 객체 내부에 getset 메서드를 만들어줬습니다. 추가로 데이터를 불러오거나 저장할 때 사용하는 key 값은 따로 상단에서 상수로 선언해 추후 손쉽게 바꿀 수 있도록 준비해줬습니다.

코드를 작성한 뒤, todosStorageApp 컴포넌트에서 불러와 사용하세요.

App.js

(...)
import todosStorage from './storages/todosStorage';

function App() {
  const today = new Date();

  const [todos, setTodos] = useState([
    {id: 1, text: '작업환경 설정', done: true},
    {id: 2, text: '리액트 네이티브 기초 공부', done: false},
    {id: 3, text: '투두리스트 만들어보기', done: false},
  ]);

  useEffect(() => {
    todosStorage
      .get()
      .then(setTodos)
      .catch(console.error);
  }, []);

  useEffect(() => {
    todosStorage.set(todos).catch(console.error);
}, [todos]);

App 컴포넌트에서는 더 이상 AsyncStorage를 사용하지 않으므로 import 코드를 지워주세요. 그리고 todosStorage를 불러온 다음 useEffect에서 getset 메서드를 사용할 때 이번에는 async 함수를 따로 선언하지 않고 Promise를 그대로 사용했습니다. 데이터를 불러오는 부분에서 .then(setTodos)라고 코드를 작성했는데, 데이터를 불러오고 나서 그 결과물을 setTodos의 함수 인자로 넣어 호출하겠다는 의미입니다.

코드를 저장하고, iOS와 안드로이드에서 둘 다 잘 작동하는지 확인해보세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.