March 25, 2021 ( last updated : March 25, 2021 )
Graphql
gql
그래프큐엘
김혜원
https://github.com/sneakstarberry/
김혜원이 배워가고 싶다고 해서 시작된 포스트
mutation
에 대한 개념은 충분히 익혔으므로 이제 실전에 적용해보겠습니다.
query
와 대부분이 비슷하기 때문에 실전 query
편을 다시 보고 오시는 것을 추천 드립니다.
import { gql } from "@apollo/client";
const SAVE_ROCKET = gql`
mutation saveRocket($rocket: RocketInput!) {
saveRocket(rocket: $rocket) {
model
}
}
`;
interface RocketInventory {
id: number;
model: string;
year: number;
stock: number;
}
interface NewRocketDetails {
model: string;
year: number;
stock: number;
}
먼저 gql 쿼리문을 작성합니다. 그리고 변수에 저장해 둡니다. 이제 이 쿼리 문을 실제로 실행 시켜줄수 있는 코드를 작성하겠습니다.
import { useMutation } from "@apollo/client";
export function NewRocketForm() {
const [model, setModel] = useState('');
const [year, setYear] = useState(0);
const [stock, setStock] = useState(0);
const [saveRocket, { error, data }] = useMutation<
{ saveRocket: RocketInventory },
{ rocket: NewRocketDetails }
>(SAVE_ROCKET, {
variables: { rocket: { model, year: +year, stock: +stock } }
});
...
useMutation
을 통해서 saveRocket
이라는 함수를 생성 시켜 줍니다. 그리고 saveRocket
이라는 함수를 필요한 곳이 쓰면됩니다. 위와 같이 말고 다음과 같이 쓸 수 있습니다.
...
const [saveRocket, { error, data }] = useMutation<
{ saveRocket: RocketInventory },
{ rocket: NewRocketDetails }
>(SAVE_ROCKET);
...
위 형태는 variables
즉 매개변수를 넣는 곳이 보이지 않습니다. 이 같은들경우 saveRocket
의 매개변수에 {variables:{변수들}
} 형식으로 쓸 수 있습니다. 사실상 원래 useMutation
의 두번째 매개변수에 넣어주어야 할 것들을 해당 함수의 매개변수에 넣어주면 됩니다.
Originally published March 25, 2021
Latest update March 25, 2021
Related posts :