

// 비동기
const onclickAsync = () => {
const result = fetch("https://koreanjson.com/posts/1");
console.log(result); // Promise
};
// 동기
const onClickSync = async () => {
const result = await fetch("https://koreanjson.com/posts/1");
const data = await result.json();
console.log(data); // 제대로된 결과 => (title: "...", id = "...")
};
onclickAsync 함수의 경우 koreanjson의 API를 불러와 콘솔에 출력하고 있다. 하지만 제대로 된 값을 받지 못했고 Promise를 반환받게 된다.
이유는 아직 API를 받기도 전인데 바로 콘솔에 출력하고 있기 때문이다.
onClickSync 함수의 경우 async를 주고 API에 await을 걸어줘서 API를 받아오고 받아온 값을 json형태로 바꾸고 받게 되어서 제대로 된 결과가 출력되고 있음.
"use client";
import { ApolloClient, ApolloProvider, InMemoryCache } from "@apollo/client";
interface IApolloSetting {
children: React.ReactNode;
}
export default function ApolloSetting(props: IApolloSetting) {
const client = new ApolloClient({
uri: "http://main-example.codebootcamp.co.kr/graphql",
cache: new InMemoryCache(),
});
return <ApolloProvider client={client}>{props.children}</ApolloProvider>;
}

// graphql 요청에 필요한 도구 불러오기
import { useMutation, gql } from '@apollo/client'
// graphql 코드 생성
const 나의그래프큐엘셋팅 = gql`
mutation {
createBoard(
writer: "123",
title: "안녕하세요",
contents: "반갑습니다"
){
_id
number
message
}
}
`
// mutation 코드 생성
const [나의함수] = useMutation(나의그래프큐엘셋팅)
const [나의함수] = useMutation(나의그래프큐엘셋팅);
const onClickSubmit = () => {
나의함수({
variables :{
writer: "123",
title: "안녕하세요",
contents: "반갑습니다"
}
});
}
return <button onClick={onClickSubmit}>GRAPHQL-API 요청하기</button>;
// mutation에 동기식 처리
async function handleClickPost(){
const result = await createBoard({
variables: {
aaa: "훈이",
bbb: "1234",
ccc: "안녕하세요 훈이에요",
ddd: "반갑습니다"
}
})
// 결과물 확인하기
console.log(result)
}
return (
<button onClick={handleClickPost}>게시물 등록</button>
)