摘要:在項(xiàng)目中使用當(dāng)然我們可以通過(guò)直接在中攜帶參數(shù)直接請(qǐng)求,這樣太過(guò)麻煩。為我們提供了一整套解決方案,可以解決大部分問(wèn)題。本篇文章將介紹如何在你的項(xiàng)目中簡(jiǎn)單使用和一些目前遇到的小坑。
Vue-apollo — 在Vue-cli項(xiàng)目中使用Graphql
Vue-apollo — Integrates apollo in your Vue components with declarative queries.
當(dāng)然我們可以通過(guò)直接在url中攜帶參數(shù)直接請(qǐng)求,這樣太過(guò)麻煩。vue-apollo為我們提供了一整套解決方案,可以解決大部分問(wèn)題。
本篇文章將介紹如何在你的vue-cli項(xiàng)目中簡(jiǎn)單使用vue-apollo和一些目前遇到的小坑。
安裝npm install --save vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag
創(chuàng)建ApolloClient實(shí)例, 安裝VueApollo插件
import Vue from "vue" import { ApolloClient } from "apollo-client" import { HttpLink } from "apollo-link-http" import { InMemoryCache } from "apollo-cache-inmemory" import VueApollo from "vue-apollo" const httpLink = new HttpLink({ // You should use an absolute URL here uri: "http://localhost:3020/graphql", }) // Create the apollo client const apolloClient = new ApolloClient({ link: httpLink, cache: new InMemoryCache(), connectToDevTools: true, }) // Install the vue plugin Vue.use(VueApollo)
如果你開啟了vue-cli提供的代理, 這里同樣適用.
創(chuàng)建PROVIDER就像vue-router與vuex一樣, 需要將apolloProvider添加為根組件.
const apolloProvider = new VueApollo({ defaultClient: apolloClient, }) new Vue({ el: "#app", provide: apolloProvider.provide(), render: h => h(App), })quasar-cli 中安裝
如果你不了解Quasar Framework并且不打算使用, 這段可以跳過(guò).
在plugins目錄中創(chuàng)建新的js文件, 并在 quasar.conf.js 中加入它.
打開創(chuàng)建好的文件:
import {ApolloClient} from "apollo-client" import {HttpLink} from "apollo-link-http" import {InMemoryCache} from "apollo-cache-inmemory" import VueApollo from "vue-apollo" // Create the apollo provider const apolloProvider = new VueApollo({ defaultClient: new ApolloClient({ link: new HttpLink({ // You should use an absolute URL here uri: "http://localhost:3020/graphql", }), cache: new InMemoryCache(), connectToDevTools: true }) }) // leave the export, even if you don"t use it export default ({ app, Vue }) => { // something to do Vue.use(VueApollo) app.provide = apolloProvider.provide() }使用 query
需要提前在組件中定義graphql字符串.
data中必須提前創(chuàng)建apollo中相應(yīng)字段且字段名必須相同.
通過(guò)gql創(chuàng)建graphql字符串, 特別注意:使用 query(){return gql` } 用來(lái)創(chuàng)建需要計(jì)算得到的字符串, 如字符串中攜帶${this.hello}等. 純字符串可用query:gql` 直接創(chuàng)建.
loadingKey指定data中創(chuàng)建的字段, 用于表示狀態(tài), loadingKey應(yīng)為初始值為0的整數(shù). 處于加載狀態(tài)時(shí)會(huì)執(zhí)行loadingKey++操作, 加載結(jié)束會(huì)執(zhí)行loadingKey—操作.
mutation隨時(shí)使用, 不需要提前聲明或定義. 請(qǐng)求結(jié)果為一個(gè)promise.
this.$apollo.mutate({ // Query mutation: gql`mutation ($label: String!) { addTag(label: $label) { id label } }`, // Parameters variables: { label: this.newTag, } }).then(data=>{ console.log(data) }).catch(error=>{ console.log(error) })
并沒有mutation(){return gql`} 這樣的操作, 所以計(jì)算屬性需要通過(guò) variables`傳入. 當(dāng)然這種方法也適用于query.
數(shù)據(jù)更新一般的, 在組件創(chuàng)建時(shí)會(huì)發(fā)起一次query請(qǐng)求. 如果需要重新請(qǐng)求數(shù)據(jù):this.$apollo.queries.<$name>.refetch()
如 this.$apollo.queries.hello.refetch() 請(qǐng)求指定字段.
請(qǐng)求發(fā)起后loadingKey也將重新計(jì)算.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/93590.html
摘要:什么是是一個(gè)用于的查詢語(yǔ)言,是一個(gè)使用基于類型系統(tǒng)來(lái)執(zhí)行查詢的服務(wù)端運(yùn)行時(shí)下圖展示所處的位置優(yōu)點(diǎn)有強(qiáng)類型是強(qiáng)類型的,可使用來(lái)定義。 1.什么是graphqlGraphQL 是一個(gè)用于 API 的查詢語(yǔ)言,是一個(gè)使用基于類型系統(tǒng)來(lái)執(zhí)行查詢的服務(wù)端運(yùn)行時(shí)下圖展示graphql所處的位置showImg(https://segmentfault.com/img/bVbgDGe?w=905&h=...
摘要:樣例前端傳入字段和結(jié)構(gòu)。后臺(tái)按照前端的需求返回?cái)?shù)據(jù)。則將前后臺(tái)通信直接分為兩大類和。顧名思義,是默認(rèn)的操作符,代表查詢,是不會(huì)給服務(wù)端帶來(lái)副作用的請(qǐng)求。文檔文檔部分文檔就是前端向后臺(tái)描述所需的字段。降低前后端溝通成本。 簡(jiǎn)介 showImg(https://segmentfault.com/img/bVbmKX5?w=150&h=150); GraphQL是基于「類型系統(tǒng)」來(lái)執(zhí)行查詢的...
摘要:首先我們來(lái)熟悉下的工作機(jī)制一個(gè)查詢可以包含一個(gè)或者多個(gè)操作,類似于一個(gè)。操作可以使兩種類型查詢或者修改。以后就又可以愉快的裝逼了本文章只適于初學(xué)者作者考拉閱讀前端工程師 首先我們來(lái)熟悉下graphql的工作機(jī)制 一個(gè)GraphQL查詢可以包含一個(gè)或者多個(gè)操作(operation),類似于一個(gè)RESTful API。操作(operation)可以使兩種類型:查詢(Query)或者修改(m...
摘要:前端每周清單第期微服務(wù)實(shí)踐,與,組件技巧,攻防作者王下邀月熊編輯徐川前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。 前端每周清單第 26 期:Node.js 微服務(wù)實(shí)踐,Vue.js 與 GraphQL,Angular 組件技巧,HeadlessChrome 攻防 作者:王下邀月熊 編輯:徐川...
摘要:這個(gè)庫(kù)提供了一個(gè)原始配置的上層抽象,使其可以定義具名的規(guī)則和具名插件,并有機(jī)會(huì)在后期進(jìn)入這些規(guī)則并對(duì)它們的選項(xiàng)進(jìn)行修改。它允許我們更細(xì)粒度的控制其內(nèi)部配置。接下來(lái)有一些常見的在中的修改的例子。 前言 在項(xiàng)目開發(fā)中我們難免碰到需要對(duì)webpack配置更改的情況,今天就主要來(lái)講一下在vue.config.js中對(duì)一些配置的更改,簡(jiǎn)單介紹一下loader的使用;用configureWebpa...
閱讀 2044·2023-04-25 15:24
閱讀 1584·2019-08-30 12:55
閱讀 1621·2019-08-29 15:27
閱讀 476·2019-08-26 17:04
閱讀 2412·2019-08-26 10:59
閱讀 1806·2019-08-26 10:44
閱讀 2206·2019-08-22 16:15
閱讀 2594·2019-08-22 15:36