- 프론트엔드 공부 35일차 -
동기 vs 비동기
동기
서버 컴퓨터가 작업이 끝날 때까지 기다리는 통신
비동기
서버 컴퓨터가 작업이 끝날 때까지 기다리지 않는 통신, 서버에 요청(등록, 수정, 삭제 등) 저장이 될 때까지 기다리지 않고 다른 작업 진행
동기 통신을 위해서는 async 와 awiat를 사용해야한다.
ex)
async function 함수이름() {
const data = await axios.get(url)
console.log(data)
}
import axios from "axios";
export default function RestGetPage() {
function onClickAsync() {
const result = axios.get("https://koreanjson.com/posts/1");
console.log(result);
}
// async function onClickSync() {
// const result = await axios.get("https://koreanjson.com/posts/1");
// console.log(result);
// console.log(result.data.title);
// }
const onClickSync = async () => {
const result = await axios.get("https://koreanjson.com/posts/1");
console.log(result);
console.log(result.data.title);
};
return (
<div>
<button onClick={onClickAsync}>REST-API(비동기) 요청하기</button>
<button onClick={onClickSync}>REST-API(동기) 요청하기</button>
</div>
);
}
URN, URL, URI
URI : https://google.com?search=짱구#aaa
URL : https://google.com?search=짱구
URN : google.com?search=짱구#aaa
Mutation 실습
import { useMutation, gql } from "@apollo/client";
import { useState } from "react";
const CREATE_PRODUCT = gql`
mutation createBoard($writer: String, $title: String, $contents: String) {
createBoard(writer: $writer, title: $title, contents: $contents) {
_id
number
message
}
}
`;
export default function GraphqlMutationPage() {
const [writer, setWriter] = useState()
const [title, setTitle] = useState()
const [contents, setContents] = useState()
const [createBoard] = useMutation(CREATE_PRODUCT);
const onClickSubmit = async () => {
const result = await createBoard({
variables: {
// variables는 $와 같은 역할을함
writer: writer,
title: title,
contents: contents,
},
});
console.log(result);
}
const onChangeWriter = (event) =>{
setWriter(event.target.value)
}
const onChangeTitle = (event) =>{
setTitle(event.target.value)
}
const onChangeContents = (event) =>{
setContents(event.target.value)
}
return (
<div>
작성자 : <input type="text" onChange={onChangeWriter}></input>
제목 : <input type="text" onChange={onChangeTitle}></input>
내용 : <input type="text" onChange={onChangeContents}></input>
<button onClick={onClickSubmit}>Graphql-API 요청하기</button>
</div>
)
}
const CREATE_PRODUCT = gql`
mutation createBoard($writer: String, $title: String, $contents: String) {
createBoard(writer: $writer, title: $title, contents: $contents) {
_id
number
message
}
}
`;
mutation createBoard($writer: String, $title: String, $contents: String) : 변수 타입 적는 곳
createBoard(writer: $writer, title: $title, contents: $contents) : 실제로 우리가 전달할 변수 적는 곳
'프론트엔드 공부 > React' 카테고리의 다른 글
37일차 프론트엔드 공부 - Routing (1) | 2024.11.17 |
---|---|
36일차 프론트엔드 공부 -나만의 페이지 만들기 실습 03 (0) | 2024.11.16 |
34일차 프론트엔드 공부 - 데이터 통신 (0) | 2024.11.03 |
33일차 프론트엔드 공부 -나만의 페이지 만들기 실습 02 (0) | 2024.11.02 |
32일차 프론트엔드 공부 - State (2) | 2024.10.27 |