摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。其中提到了等需要后端配合的東西,徒增了配置的復(fù)雜性。如果不行,再跟隨我的簡(jiǎn)單步驟試試。環(huán)境要求請(qǐng)確保你已經(jīng)搭建了自己的環(huán)境下文在行號(hào)前添加表示刪除的原代碼,表示新增的代碼。
在 Redux 基礎(chǔ)上添加 Apollo 其它教程21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。
搭建 Apollo client 端,集成 redux
使用 apollo-client 來(lái)獲取數(shù)據(jù)
修改本地的 apollo store 數(shù)據(jù)
提供定制方案請(qǐng)求攔截
封裝修改 client 的 api
apollo store 存儲(chǔ)細(xì)節(jié)寫入 store 的失敗原因分析和解決方案
Apollo 其實(shí)提供了示例倉(cāng)庫(kù):
Small Example: Snack | Apollo React Docs
Full Example: GitHunt | Apollo React Docs
和 Redux 的集成也有這篇文章: Integrating with Redux | Apollo React Docs
說(shuō)起來(lái) GitHunt 這個(gè)庫(kù)還蠻奇怪的,不同于其它教程一般把示例 repo 寫得比較精簡(jiǎn),這個(gè) repo 搞了一堆東西來(lái)迷惑你。
其中提到了 persistgraphql 等需要后端配合的東西,徒增了配置的復(fù)雜性。
你可以先試試把上面的例子跑起來(lái),畢竟代碼比較全,也有助于你看懂我下一章節(jié)是如何進(jìn)行封裝的。
如果不行,再跟隨我的簡(jiǎn)單步驟試試。
請(qǐng)確保你已經(jīng)搭建了自己的 Redux 環(huán)境
node >= 6.10
npm >= 3.10
react: 15 ~ 16
redux: 3.x
webpack: 2.x
下文在行號(hào)前添加 - 表示刪除的原代碼, + 表示新增的代碼。
install package是的,就是從 git commit 里復(fù)制過(guò)來(lái)的
npm i --save react-apollo npm i --save-dev graphql-tag
NOTE: 最近官方出了 react-apollo 2.x,但本文使用 1.x。所以檢查下你下載的版本是不是 1.x 的。
update webpack.config.js增加對(duì) .gql 文件的支持
// ... extensions: [".web.js", ".js", ".jsx", ".gql", "graphql"], // ...
module: { rules: [ // ... { test: /.(graphql|gql)$/, exclude: /node_modules/, loader: "graphql-tag/loader", }, ] }創(chuàng)建 client
apollo/createApolloClient.js
import { ApolloClient, createNetworkInterface, } from "react-apollo"; export default function createApolloClient() { const networkInterface = createNetworkInterface({ uri: `${yourGragqlUri}`, opts: { // fetch options credentials: "same-origin", }, }); const client = new ApolloClient({ networkInterface, }); return client; }
apollo/index.js
import createApolloClient from "./createApolloClient"; const client = createApolloClient(); export default client; export const apolloReducer = client.reducer();添加 apollo reducer
rootReducer.js
+ import { apolloReducer as apollo } from "./apollo"; let reducersList = { // ... apollo, };使用 Apollo 的 Provider
App.jsx
- import { Provider } from "react-redux"; + import { ApolloProvider } from "react-apollo"; import store from "./configureStore"; + import client from "./apollo"; // ... -+ +{ /* ... */ } -
至此,你就搭建好了最簡(jiǎn)單的 ApolloClient。
當(dāng)然,生產(chǎn)環(huán)境不能止步于此。如果你是新手,那么請(qǐng)繼續(xù)看如何簡(jiǎn)單使用;或者進(jìn)一步的定制。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91895.html
摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。那怎么辦呢本章就教你非常簡(jiǎn)單地實(shí)現(xiàn)擴(kuò)展的。我們可以借鑒的的寫法,為的實(shí)例添加一些自己的方法。更重要的是,也會(huì)有的效果,上一個(gè)的輸出會(huì)成為下一個(gè)的輸入,便于組合。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-client 來(lái)獲取數(shù)據(jù)修改本地的 ...
摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。一旦你丟失了,可能會(huì)導(dǎo)致寫入失敗,或者盡管寫入了,但本該攜帶的那一層的數(shù)據(jù)沒(méi)有寫入。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-client 來(lái)獲取數(shù)據(jù)修改本地的 apollo store 數(shù)據(jù)提供定制方案 請(qǐng)求攔截 封裝修改 clie...
摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。接管了請(qǐng)求和狀態(tài)管理。一般在生產(chǎn)環(huán)境中,我們通常還希望做權(quán)限驗(yàn)證請(qǐng)求攔截等事務(wù)處理。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-client 來(lái)獲取數(shù)據(jù)修改本地的 apollo store 數(shù)據(jù)提供定制方案 請(qǐng)求攔截 封裝修改 clie...
摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。內(nèi)部通過(guò)自己的私有沒(méi)有暴露給開發(fā)者來(lái)更新這個(gè)。相當(dāng)于這個(gè)就是自己維護(hù)的,它將所有通過(guò)得到的數(shù)據(jù)保存在這里。的生成規(guī)則根據(jù)官方文檔的說(shuō)法,在創(chuàng)建時(shí),可選設(shè)置。如果不存在,則可能出現(xiàn)。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-client 來(lái)...
摘要:分鐘學(xué)是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。搭建端,集成使用來(lái)獲取數(shù)據(jù)修改本地的數(shù)據(jù)提供定制方案請(qǐng)求攔截封裝修改的存儲(chǔ)細(xì)節(jié)寫入的失敗原因分析和解決方案修改本地?cái)?shù)據(jù)之前我們已經(jīng)知道,我們可以在請(qǐng)求結(jié)束之后,通過(guò)自動(dòng)執(zhí)行的回調(diào),修改。 21 分鐘學(xué) apollo-client 是一個(gè)系列,簡(jiǎn)單暴力,包學(xué)包會(huì)。 搭建 Apollo client 端,集成 redux使用 apollo-clien...
閱讀 3170·2021-09-10 10:51
閱讀 3351·2021-08-31 09:38
閱讀 1639·2019-08-30 15:54
閱讀 3129·2019-08-29 17:22
閱讀 3214·2019-08-26 13:53
閱讀 1960·2019-08-26 11:59
閱讀 3283·2019-08-26 11:37
閱讀 3308·2019-08-26 10:47