Slo*_*wie 8 javascript graphql apollo-client webpack-encore
我想使用一些片段:
import {gql} from "apollo-boost";
import "../fragments/cardFragments.graphql"
export const ADD_CARD = gql`
mutation AddCard {
createCard(input: {
private: true,
section: "school",
createdBy: "api/users/1"
}) {
card {
...CardFields
}
}
}
`;
export default {ADD_CARD}
Run Code Online (Sandbox Code Playgroud)
卡片段.graphql:
fragment CardFields on card {
id
private
section
createdBy {
id
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台内我收到错误:
[GraphQL 错误]:消息:未知片段“CardFields”。,位置:[对象对象],路径:未定义
我是不是忘记了什么?
编辑:
为了让 graphql 片段工作,我需要使用 webpack 加载它:Apollo 文档
我用以下方法做到了这一点Webpack Encore
:
.addLoader({
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'graphql-tag/loader',
});
module.exports = Encore.getWebpackConfig();
Run Code Online (Sandbox Code Playgroud)
在我这样做之前 - 我收到了一个关于 .graphql 内部不可加载的 .graphql 扩展的错误Webpack Encore
。
关于使用创建 cutsom 加载程序,有什么我看不到的吗Webpack Encore
?
你应该import { CardFields } from "../fragments/cardFragments.js"
然后在你的突变中使用这个片段,如下所示:
import {gql} from "apollo-boost";
import { CARD_FEILDS } from "../fragments/cardFragments.js"
export const ADD_CARD = gql`
mutation AddCard {
createCard(input: {
private: true,
section: "school",
createdBy: "api/users/1"
}) {
card {
...CardFields
}
}
}
${CARD_FEILDS}
`;
export default {ADD_CARD}
Run Code Online (Sandbox Code Playgroud)
在cardFragments.js中:
import {gql} from "apollo-boost"
export const CARD_FEILDS = gql `
fragment CardFields on card {
id
private
section
createdBy {
id
}
}
`
Run Code Online (Sandbox Code Playgroud)