iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

轉職未滿一年的點點滴滴系列 第 22

[Day 22] - 『轉職工作的Lessons learned』 - GraphQL (Hasura) - Apollo Client

  • 分享至 

  • xImage
  •  

GraphQL (Hasura)系列,忘記介紹最一開始從前端連線到GraphQL (Hasura)一個重要的套件 - Apollo Client。

大致介紹一下這個Appolo Client 是什麼,他是一個 GraphQL + React 套件,除了支援React之外,也可以套用在其他的框架上。 這個套件可以讓我們用簡單的方式去跟GraphQL server溝通。

可參考以下連線方式:

import React from 'react';
import { render } from 'react-dom';
import {
  ApolloClient,
  InMemoryCache,
  ApolloProvider,
  useQuery,
  gql
} from "@apollo/client";

const client = new ApolloClient({
  uri: 'https://48p1r2roz4.sse.codesandbox.io',
  cache: new InMemoryCache()
});

function App() {
  return (
    <div>
      <h2>My first Apollo app ?</h2>
    </div>
  );
}

render(

  <ApolloProvider client={client}>
    <App />
  </ApolloProvider>,
  document.getElementById('root'),
);
che: new InMemoryCache()
});

連線完畢後,搭配寫好的Graphql語法

const EXCHANGE_RATES = gql`
  query GetExchangeRates {
    rates(currency: "USD") {
      currency
      rate
    }
  }
`;

就可以使用類似像React Hook(比方說useState的方式)去跟Hasura取得資料

function ExchangeRates() {

  const { loading, error, data } = useQuery(EXCHANGE_RATES);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error :(</p>;

  return data.rates.map(({ currency, rate }) => (
    <div key={currency}>
      <p>
        {currency}: {rate}
      </p>
    </div>
  ));
}

function App() {
  return (
    <div>
      <h2>My first Apollo app ?</h2>

      <ExchangeRates />
    </div>
  );
}


上一篇
[Day 21] - 『轉職工作的Lessons learned』 - GraphQL (Hasura) - Event Trigger
下一篇
[Day 23] -『 GO語言學習筆記』- 複合型別 - 陣列(Array) (I)
系列文
轉職未滿一年的點點滴滴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言