onChangeField 함수는 useCallback으로 감싸 주었는데, 이는 Editor 컴포넌트에서 사용할 useEffect에서 onChangeField를 사용할 것이기 때문입니다. onChangeField를 useCallback으로 감싸 주어야만 나중에 Editor에서 사용할 useEffect가 컴포넌트가 화면에 나타났을 때 딱 한 번만 실행되기 때문입니다.
또한, 사용자가 WritePage에서 벗어날 때는 데이터를 초기화해야 합니다. 컴포넌트가 언마운트될 때 useEffect로 INITIALIZE 액션을 발생시켜서 리덕스의 write 관련 상태를 초기화해 줍니다. 만약 초기화를 하지 않는다면, 포스트 작성 후 다시 글쓰기 페이지에 들어왔을 때 이전에 작성한 내용이 남아 있게 됩니다.
컨테이너 컴포넌트를 다 만들었으면 WritePage에서 기존 Editor를 EditorContainer로 대체시키세요.
pages/WritePage.js
import React from 'react'; import TagBox from '../components/write/TagBox'; import WriteActionButtons from '../components/write/WriteActionButtons'; import Responsive from '../components/common/Responsive'; import EditorContainer from '../containers/write/EditorContainer'; const WritePage = () => { return ( <Responsive> <EditorContainer /> <TagBox /> <WriteActionButtons /> </Responsive> ); }; export default WritePage;