[GQL] GraphQL Varaible 설정하기(쿼리에 변수주기)
모든 소스코드는 여기 에서 확인 가능합니다.
GraphQL 에 변수주기
게시글 목록과 달리 게시글 상세보기를 구현해야 할 때는 쿼리에 사용 할 조건문이 필요하다. React 에서 GQL 에 조건문을 작성해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 조회에 해당하는 부분이니 query 를 사용한다.
query getVoc($vocId: Int!) { -- 매개변수로 받는 vocId의 타입을 검증한다.
voc(vocId: $vocId) -- vocId 라는 변수에 매개변수로 받은 값($vocId) 를 저장한다.
@rest(
type: "Voc"
path: "/voc/search/{args.vocId}" -- 아규먼트에서 vocId를 꺼낸다.
method: "GET"
) {
question {
id
title
createdAt
content
}
answer {
id
adminName
createdAt
content
}
}
}
React 에서 사용하기
React
는 단방향 통신이기 때문에, 상위 컴포넌트에서 쿼리에 사용 될 매겨변수를 받아와야 한다.
이를 위해선 Route
설정시 path variable 로 매개변수명을 설정 해야 한다.
🛠 src/App.js
1
2
3
4
5
6
7
8
9
10
11
12
function App() {
return (
<>
<Router>
<Routes>
<Route path='/apollo/voc/:vocId' element={<ApolloVocView />} />
</Routes>
</Router>
</>
);
}
🛠 src/pages/apollo/voc/ApolloVocView.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const query = gql`
query getVoc($vocId: Int!) {
voc(vocId: $vocId)
@rest(
type: "Voc"
path: "/voc/search/{args.vocId}"
method: "GET"
) {
question {
id
title
createdAt
content
}
answer {
id
adminName
createdAt
content
}
}
}
`;
function GetData(vocId) {
const [question, setQuestion] = useState({});
client.query({ query, variables: {vocId: vocId} }).then(response => {
setQuestion(response.data.voc.question);
});
}
function VocView() {
const{vocId} = useParams();
const item = GetData(vocId);
return (<>
{item}
</>);
}
Leave a comment