section27 퀴즈 질문입니다.
등록 시 화면 페이지는 바뀌는데 바뀌자마자 위와 같은 오류가 떠서 계속 찾아보는데 혼자는 해결하기 어려워 여쭤봅니다 ㅠㅠ 어디가 틀린 걸까요? mutation은 제대로 된 걸 확인했는데 fetch가 안 되네요.
폴더 구조는
05/boards/new index.js
05/boards/products/[productId] index.js
import { useState } from "react";
import { useMutation, gql } from "@apollo/client";
import { useRouter } from "next/router";
const CREATE_PRODUCT = gql`
mutation createProduct(
$seller: String
$createProductInput: CreateProductInput!
) {
createProduct(seller: $seller, createProductInput: $createProductInput) {
_id
number
message
}
}
`;
export default function ProductRegPage() {
const router = useRouter();
const [seller, setSeller] = useState();
const [name, setName] = useState();
const [detail, setDetail] = useState();
const [price, setPrice] = useState();
const [createProduct] = useMutation(CREATE_PRODUCT);
const onClickRegister = async () => {
try {
const result = await createProduct({
variables: {
seller,
createProductInput: {
name,
detail,
price,
},
},
});
console.log(result);
router.push(`/05/boards/products/${result.data.createProduct._id}`);
} catch (error) {
alert(error.message);
}
};
const onChangeSeller = (event) => {
setSeller(event.target.value);
};
const onChangeName = (event) => {
setName(event.target.value);
};
const onChangeDetail = (event) => {
setDetail(event.target.value);
};
const onChangePrice = (event) => {
setPrice(parseInt(event.target.value));
};
return (
<div>
판매자: <input type="text" onChange={onChangeSeller} />
상품명: <input type="text" onChange={onChangeName} />
상품내용: <input type="text" onChange={onChangeDetail} />
상품가격: <input type="text" onChange={onChangePrice} />
<button onClick={onClickRegister}>상품 등록</button>
</div>
);
}
import { useQuery, gql } from "@apollo/client";
import { useRouter } from "next/router";
const FETCH_PRODUCT = gql`
query fetchProduct($productId: ID) {
fetchProduct(productId: $productId) {
seller
name
detail
price
}
}
`;
export default function ProductDetailPage() {
const router = useRouter();
console.log(router);
const { data } = useQuery(FETCH_PRODUCT, {
variables: { productId: router.query.productId },
});
console.log(data);
return (
<div>
<div>판매자:{data ? fetchProduct?.seller : "loading..."}</div>
<div>상품명:{data ? fetchProduct?.name : "loading..."}</div>
<div>상품내용:{data ? fetchProduct?.detail : "loading..."}</div>
<div>상품가격:{data ? fetchProduct?.price : "loading..."}</div>
</div>
);
}
답변 1
fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다
0
40
1
댓글 기능 구현 중 질문드립니다.
0
66
1
쿠폰코드 발급
0
136
2
example 서버 플레이그라운드, API 접속 모두 안됩니다.
0
87
2
문의드립니다!! ㅠㅠ
0
102
2
graphql 백엔드 서버가 포폴용 빼곤 접속이 안됩니다.
0
78
2
_app.js 작성 이후로 에러가 발생하네요
0
95
2
학습자료
0
71
2
학습자료가 안열립니다.
0
51
2
플레이 그라운드 퀴즈 문제 질문이 있습니다.
0
61
0
기존강의 구매자, 업데이트 끝인가요?
0
110
3
업데이트 버전 수강
0
89
2
완벽한 프론트엔드
0
136
2
나만의 쇼핑몰 샘플 페이지 접속 확인부탁드립니다.
0
84
1
graphql 접속이 안됩니다.
0
101
2
const, let 사용 질문 드립니다.
0
70
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





