더북(TheBook)

이렇게 하면 포스트 정보의 상태와 업데이트 함수를 어디서든 접근할 수 있습니다. 그래서 FeedScreen에서는 포스트를 불러와서 목록을 업데이트할 수 있고, usePostActions에서는 상태를 조회해 특정 포스트를 제거하거나 수정할 수 있습니다. 또 UploadScreen에서는 방금 작성한 포스트를 상태에 추가할 수 있겠죠.

이 방법의 장점은 별도의 라이브러리를 설치할 필요가 없다는 것입니다. 하지만 현재 상황에서는 꽤나 비효율적입니다. 이를 구현하기 위해 많은 코드를 재배치시켜야 하고요. 또 전체 포스트, 특정 사용자의 포스트, 단일 포스트에 대한 정보들은 서로 연관이 없는데 하나의 Context에 담아야 하는 것 자체가 조금 이상합니다. 그렇다고 각 상황에 맞춰서 Context를 만들면 세 개의 Context를 만들어야 하기 때문에 손이 많이 가죠.

두 번째 방법은 이벤트를 사용하는 것입니다. 이벤트를 사용하면 특정 이벤트가 발생했을 때 원하는 함수를 호출할 수 있습니다. 이 개념은 브라우저에도 있고, Node.js에도 있는 개념입니다.

만약 Node.js 또는 웹 애플리케이션을 개발해본 경험이 있다면 이벤트에 익숙할 텐데요. 그렇지 않은 분들을 위해 간단한 예시를 보여드리겠습니다. 이벤트를 사용하면 다음과 같은 작업이 가능합니다.

// 사전에 이벤트에 특정 콜백 함수를 등록합니다.
events.addListener('ping', () => {
  console.log('pong');
});

// 만약 ping 이벤트를 발생(emit)시키면 사전에 등록했던 콜백 함수가 호출됩니다.
events.emit('ping');
// 이벤트엔 원하는 정보도 담을 수 있습니다. 다음과 같이 말이죠.
events.addListener('message', (message) => {
  console.log('Received:', message);
})

events.emit('message', '안녕하세요.');
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.