iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 12
0
Data Technology

GraphQL + ApolloData 入門系列 第 12

ApolloData & Query method (三)

  • 分享至 

  • xImage
  •  

介紹

因為 Query method 還滿多的 ,這次繼續來介紹好用的 Query mehtod Api

data.startPolling:通常如果會希望固定一個時間 ,向Server發送 請求fetch 就可以使用 startPolling,反之就使用 this.props.data.stopPolling() 來停止這個動作


class MyComponent extends Component {
  componentDidMount() {
    // 除了直接設定也可以使用 options.pollInterval設定
    this.props.data.startPolling(1000);
  }

  render() {
    // ...
  }
}

export default graphql(gql`query { ... }`)(MyComponent);

data.updateQuery(updaterFn):在ApolloData裡面通常都會有 query cache 但有時會使用到mutation對資料庫操作(新增刪除修改等等) 就會需要使用 updateQuery,要注意的是這個 method 不會異動到 Server 的資料,只對 Store(cache) 去做 update

(previousResult, { variables }) => nextResult

options的設定

options.fetchPolicy

ApolloData 默認情況下,元件將嘗試從緩存中讀取,如果查詢的數據在 cache 中,那麼 Apollo 只是從緩存中返回數據。如果查詢的數據不在緩存中,則Apollo將使用網絡執行Fetch。但通過選項可以改變行為。

cache-first:嘗試從緩存中首先讀取數據。如果查詢所需的數據都在緩存中,那麼將返回該數據。如果緩存結果不可用,Apollo將會從網絡中獲取。這個策略減少渲染組件時發送的網絡請求數量。

cache-and-network:這會讓Apollo首先嘗試從緩存中讀取數據。如果完成查詢所需的所有數據都在緩存中,那麼將返回該數據。但是,無論整個數據是否在緩存中,這fetchPolicy將始終使用網絡接口執行查詢,cache-first而只有在數據不在緩存中時才會執行查詢。此策略讓用戶獲得快速響應進行了優化。

network-only:這永遠不會從緩存中返回初始數據。相反,它將始終使用您的網絡接口向服務器發出請求。特性是與 Server 的數據一致性。

cache-only:這永遠不會使用網絡查詢。相反,它從緩存讀取。如果數據不存在,則會拋出錯誤。

總結

startPolling 對於定時要發request非常好用,另外 options.fetchPolicy 提供了四個策略可以選擇,不同情境選擇適合的 fetchPolicy 將會提高UX的使用體驗


上一篇
ApolloData & Query method (二)
下一篇
ApolloData & Mutaion (一)
系列文
GraphQL + ApolloData 入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言