더북(TheBook)

15.9.5 useMutation으로 게시글 작성 API 호출하기

이제 useMutation을 사용하여 게시글을 작성하는 기능을 구현합시다.

screens/WriteScreen.tsx

(...)
import {useMutation} from 'react-query';
import {writeArticle} from '../api/articles';

function WriteScreen() {
  const {top} = useSafeAreaInsets();
  const [title, setTitle] = useState('');
  const [body, setBody] = useState('');
  const {mutate: write} = useMutation(writeArticle, {
    onSuccess: () => {
      navigation.goBack();
    },
  });

  const navigation = useNavigation<RootStackNavigationProp>();
  const onSubmit = useCallback(() => {
    write({title, body});
  }, [write, title, body]);

(...)

추후 게시글을 수정할 때도 useMutation을 사용할 것이기 때문에, mutate 함수를 write라는 이름으로 변경하여 구조 분해해줬습니다. 그리고 onSuccess를 통해 게시글 작성에 성공하면 게시글 작성 화면을 닫도록 구현했습니다.

코드를 모두 작성했으면 새 게시글 작성 화면에서 제목, 내용을 입력한 후 작성 버튼을 눌러보세요. 화면이 잘 닫히나요? 기존에 ArticlesScreen에서 보이던 데이터는 자동으로 업데이트되지 않기 때문에 새로고침을 위한 작업을 구현해줘야 합니다.

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