从 10 月 8 日至 10 日加入我们在纽约市的队伍,了解关于 GraphQL 联邦和 API 平台工程的最新技巧、趋势和新闻。加入我们在纽约市举行的 GraphQL Summit 2024
文档
免费开始

使用Webpack加载查询


您可以加载查询.graphql文件,使用 Webpack。这个包graphql-tag包含一个易于设置的loader,并提供一些好处:

  1. 不在客户端处理 GraphQL AST
  2. 使查询与逻辑分离

在下面的示例中,我们创建了一个名为 currentUser.graphql的新文件:

query CurrentUserForLayout {
currentUser {
login
avatar_url
}
}

您可以在webpack配置文件中添加规则来加载此文件。

module: {
rules: [
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'graphql-tag/loader',
},
],
},

如你所见,.graphql.gql 文件在导入时将被解析:

import React, { Component } from 'react';
import { graphql } from '@apollo/react-hoc';
import currentUserQuery from './currentUser.graphql';
class Profile extends Component { ... }
Profile.propTypes = { ... };
export default graphql(currentUserQuery)(Profile)

Jest

Jest不可以使用Webpack加载器。要在Jest中执行相同的转换,请使用jest-transform-graphql

FuseBox

FuseBox不能使用Webpack加载器。为了在FuseBox中执行相同的转换,请使用fuse-box-graphql-plugin

React native

React native不能使用Webpack加载器。为了在React native中执行相同的转换,请使用babel-plugin-import-graphql

Create-React-App

create-react-app 不能使用 Webpack 加载器,除非发布。要在无需发布的 create-react-app 中执行相同的转换,请使用 graphql.macro.

import { loader } from 'graphql.macro';
const currentUserQuery = loader('./currentUser.graphql');

片段

您可以在 中使用并包含 文件,让 Webpack 为您包含这些依赖项,类似于您在纯 JS 中使用带有 gql 标签的片段和查询的方式。

#import "./UserInfoFragment.graphql"
query CurrentUserForLayout {
currentUser {
...UserInfo
}
}

查看我们是如何导入另一个 .graphql 文件中的 UserInfo (与在 JS 中导入模块相同的方式)。

以下是在另一个 .graphql 文件中定义片段的示例。

fragment UserInfo on User {
login
avatar_url
}
上一页
与 React Native 集成
下一页
基本的 HTTP 网络通信
评分文章评分

©2024Apache Graph Inc.,以Apollo GraphQL名义经营。

隐私政策

公司