React+Type Script: Apollo Client의 GraphiQL 쿼리 사용
Apollo Celient 애플리케이션 제작 준비
React 응용 프로그램의 초기 형태는 Create React App로 제작하기로 결정했다.옵션
--template typescript
인 경우 Type Script 환경을 쉽게 추가할 수 있습니다("Create React Apps를 사용하여 Type Script를 추가하는 기본 어플리케이션 만들기"참조).그럼 Apollo Client설치하다.로 갑시다.GraphiQL에도 의존성이 있습니다. 설치에 추가하십시오. (조회할 필요가 없습니다.)
npm install @apollo/client graphql
초기화ApolloClient
우선, ApolloClient의 실례를 만듭니다.구조기에 맡기는 것은 선택할 수 있는 대상이며 두 개의 설정이 추가되었다.uri
는 GraphiQL 서버의 URL에 대한 문자열입니다.cache
는 Apollo Celient가 읽은 검색 결과를 저장해야 하는 위치이며, 대부분의 경우InMemoryCache에서 실례를 설정합니다.uri: string
- Apollo Celient 통신의 GraphiQL의 단점 URI.cache: ApolloCache
- 질의 결과를 로컬로 저장하는 캐시에 Apollo Client가 적용됩니다(필수).@apollo/client
제공 패키지InMemoryCache
를 추천합니다.ApolloClient
실례를 호출하는 방법은query()
이다.gql
템플릿 소양 패키지의 검색 문자열을 매개 변수에 건네주십시오.코드001 ■
ApolloClient
로 쿼리 보내기src/App.tsx
import { useEffect } from 'react';
import {
ApolloClient,
InMemoryCache,
gql,
} from '@apollo/client';
const client = new ApolloClient({
uri: 'https://48p1r2roz4.sse.codesandbox.io',
cache: new InMemoryCache(),
});
function App() {
useEffect(() => {
client
.query({
query: gql`
query GetRates {
rates(currency: "USD") {
currency
}
}
`,
})
.then((result) => console.log(result));
}, []);
return (
<div>
<h1>Apollo Client</h1>
</div>
);
}
export default App;
코드를 실행하면 컨트롤에 조회 결과의 대상이 표시됩니다(그림001).코드샌드박스가 공개한 아래 샘플 001의 동작1을 확인해 주세요.그림 001 ■ 콘솔에 출력된 쿼리 결과
샘플001 ■ React+Type Script: Using GraphiQL queries with Apollo Client 01
ApolloProvider
에서 React에 연결된 컨텍스트ApolloProvider 어셈블리를 사용하여 Apollo Client를 React의 언어 환경에 연결할 수 있습니다.구조는 React의Context.Provider와 같다.Apollo Client 데이터는 패키지 트리의 구성 요소 중 어느 것이든 액세스할 수 있습니다.
ApolloProvider
에 GraphiQL 데이터를 사용하는 원본 구성 요소를 포함하십시오.속성client
에 대한 실례ApolloClient
.src/App.tsx
// import { useEffect } from 'react';
// import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
import {
ApolloProvider,
} from '@apollo/client';
function App() {
/* useEffect(() => {
}, []); */
return (
<ApolloProvider client={client}>
<div>
</div>
</ApolloProvider>
);
}
useQuery
연결 고리로 데이터 읽기ApolloProvider
에서 React에 연결된 상하문에서 조회 요청을 통해 데이터를 페이지로 읽을 수 있습니다.사용하는 고리는useQuery
입니다.GraphiQL의 데이터를 React와 공유합니다.쿼리는 루트 모듈src/App.tsx
에서 변수ExchangeRates
로 확인하십시오.요구의 속성으로 화폐currency
외에 환율rate
도 증가했다.다음에 확인된 서브어셈블리ExchangeRates
의 속성exchangeRates
에 대한 질의를 추가합니다.src/App.tsx
import { ExchangeRates } from './ExchangeRates';
const EXCHANGE_RATES = gql`
query GetExchangeRates {
rates(currency: "USD") {
currency
rate
}
}
`;
function App() {
return (
<ApolloProvider client={client}>
<div>
<ExchangeRates exchangeRates={EXCHANGE_RATES} />
</div>
</ApolloProvider>
);
}
useQuery 연결된 조회 형식DocumentNode
은 구성 요소를 그릴 때마다 실행되고 새로운 결실 대상을 되돌려줍니다.환율을 표시하는 서브모듈src/ExchangeRates.tsx
에서 3개의 속성(코드 002)을 꺼냅니다.loading: boolean
- 로드 중인 부울 값을 나타냅니다.true
시 조회 결과를 되돌려 주지 않았습니다.error: ApolloError
- 질의에 오류가 발생한 객체를 나타냅니다.data: TData
- GraphiQL 조회가 올바르게 실행되었을 때 얻은 결과의 데이터입니다.src/App.tsx
의 코드도 함께 정리됐다.이벤트는 코드샌드박스가 공개한 아래 샘플 002를 확인해주세요.코드 002 ■useQuery 페이지에 연결 고리로 읽은 데이터를 표시합니다.
src/ExchangeRates.tsx
import { VFC } from 'react';
import {
DocumentNode,
useQuery,
} from '@apollo/client';
type Props = {
exchangeRates: DocumentNode;
};
export const ExchangeRates: VFC<Props> = ({ exchangeRates }) => {
const { loading, error, data } = useQuery(exchangeRates);
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :(</p>;
return data.rates.map(
({ currency, rate }: { currency: string; rate: string }) => (
<div key={currency}>
<p>
{currency}: {rate}
</p>
</div>
)
);
};
src/App.tsximport {
ApolloClient,
ApolloProvider,
InMemoryCache,
gql
} from '@apollo/client';
import { ExchangeRates } from './ExchangeRates';
const client = new ApolloClient({
uri: 'https://48p1r2roz4.sse.codesandbox.io',
cache: new InMemoryCache(),
});
const EXCHANGE_RATES = gql`
query GetExchangeRates {
rates(currency: "USD") {
currency
rate
}
}
`;
function App() {
return (
<ApolloProvider client={client}>
<div>
<h1>Apollo Client</h1>
<ExchangeRates exchangeRates={EXCHANGE_RATES} />
</div>
</ApolloProvider>
);
}
export default App;
샘플 002 ■ React+Type Script: Using GraphiQL queries with Apollo Client02또 코드샌드박스에서 그래픽ql 버전을 16 이상으로 설정하면TypeError 나온다.↩
Reference
이 문제에 관하여(React+Type Script: Apollo Client의 GraphiQL 쿼리 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/FumioNonaka/items/0c6b711627e3443ff73b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)