inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

04-05-graphql-mutation-product

04-03-graphql-mutation-args 에서 작성한 게시글을 확인하려고 합니다.

해결된 질문

449

myday0827

작성한 질문수 1

0

useState로 number를 만들어서 createBoard로 작성한 게시글의 번호를 저장해두고그 number를 variables로 넣어서 내용을 확인하려고 합니다.

import { gql } from "@apollo/client";
import { useQuery } from "@apollo/client";
import { useMutation } from "@apollo/client";
import React, { useState } from "react";

const CREATE_BOARD = gql`
  mutation createBoard($writer: String, $title: String, $contents: String) {
    createBoard(writer: $writer, title: $title, contents: $contents) {
      _id
      number
      message
    }
  }
`;

const FETCH_BOARD = gql`
  query fetchBoard($number: Int) {
    fetchBoard(number: $number) {
      number
      writer
      title
      contents
    }
  }
`;

const GraphqlMutationArgsPage = () => {
  const [createBoard] = useMutation(CREATE_BOARD);
  const { data: fetchBoardData, refetch } = useQuery(FETCH_BOARD);
  const [number, setNumber] = useState(0);

  const onClickSubmit = async () => {
    const result = await createBoard({
      variables: {
        // variables: $ 역할
        writer: "훈이",
        title: "안녕하세요!",
        contents: "반갑습니다.",
      },
    });
    console.log(result);
    setNumber(result.data.createBoard.number);
  };

  const onClickFetch = async () => {
    await refetch({ number });
    console.log(fetchBoardData);
  };

  return (
    <div>
      <button onClick={onClickSubmit}>GRAPHQL-API 요청하기</button>
      {number}
      <button onClick={onClickFetch}>GRAPHQL-API 내용확인</button>
    </div>
  );
};

export default GraphqlMutationArgsPage;

이렇게 refetch를 사용하는게 맞나요?

현재 작성한 게시글이 조회가 안되고 직전 게시글이 조회가 되네요.. 현재 작성한 게시글 number는 13280인데 조회된 게시글은 13279입니다.

react node.js seo graphql next.js

답변 1

0

노원두

안녕하세요! myday0827님!

refetch 명령을 사용하시게 되면 기존에 받아왔던 FETCH_BOARDS 요청이 새롭게 다시 요청 됩니다! 하지만, console.log(fetchBoardData)에는 이전의 결과물이 출력되는 것을 보셨을 텐데요, 이것은 섹션29. setState의 원리를 먼저 공부하셔야 합니다!

아직, 원리를 공부하시기 전에 정상적인 결과라도 먼저 보고싶으시다면,
console.log(fetchBoardData)를 onClickFetch 함수의 위 또는 아래에 작성해 보세요!^^

console.log(fetchBoardData); // 여기 또는 아래

const onClickFetch = async () => {
  await refetch({ number });
};
    
console.log(fetchBoardData); // 여기 또는 위에

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

40

1

댓글 기능 구현 중 질문드립니다.

0

67

1

쿠폰코드 발급

0

140

2

example 서버 플레이그라운드, API 접속 모두 안됩니다.

0

87

2

문의드립니다!! ㅠㅠ

0

104

2

graphql 백엔드 서버가 포폴용 빼곤 접속이 안됩니다.

0

78

2

_app.js 작성 이후로 에러가 발생하네요

0

95

2

학습자료

0

71

2

학습자료가 안열립니다.

0

51

2

플레이 그라운드 퀴즈 문제 질문이 있습니다.

0

61

0

기존강의 구매자, 업데이트 끝인가요?

0

111

3

업데이트 버전 수강

0

89

2

완벽한 프론트엔드

0

136

2

나만의 쇼핑몰 샘플 페이지 접속 확인부탁드립니다.

0

84

1

graphql 접속이 안됩니다.

0

101

2

const, let 사용 질문 드립니다.

0

71

2

싸이월드 만들기 1탄 피드백 부탁드립니다.

0

122

2

회원가입 과제 피드백 부탁드립니다.

0

81

2

styled.span / styled.input "CSS 자동완성"

0

47

1

쿠폰 발급 관련

0

167

2

서버 502 error

0

247

2

쿠폰 다시 부탁드려도 될가여?

0

140

2

a태그 패딩했을때 왜 크기가 줄어들지 않고 늘어나나요

0

185

2

2분 44초 질문

0

132

3