【发布时间】:2020-08-27 10:18:46
【问题描述】:
在本地状态客户端(前端本地状态)的情况下,Apollo 不会触发解析器。阿波罗 2.7
有人知道为什么会这样吗?
设置如下:
阿波罗客户端
import { ApolloClient } from 'apollo-client'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { HttpLink } from 'apollo-link-http'
import fetch from 'isomorphic-unfetch'
import { resolvers, typeDefs } from './resolvers';
import { initCache } from './init-cache';
export default function createApolloClient(initialState, ctx) {
// The `ctx` (NextPageContext) will only be present on the server.
// use it to extract auth headers (ctx.req) or similar.
return new ApolloClient({
ssrMode: Boolean(ctx),
link: new HttpLink({
uri: 'https://api.graph.cool/simple/v1/cixmkt2ul01q00122mksg82pn', // Server URL (must be absolute)
credentials: 'include', // Additional fetch() options like `credentials` or `headers`
fetch,
}),
typeDefs,
resolvers,
connectToDevTools: true,
cache: initCache({
robot: {
__typename: 'Robot',
name: 'Robbie',
status: 'live',
},
member: {
__typename: 'Member',
name: 'RFesagfd',
}
}),
})
}
类型和解析器 (resolvers.js)
import gql from 'graphql-tag';
export const typeDefs = gql`
type Robot {
name: String!
status: String!
}
type Member {
name: String!
isLogged: Boolean!
}
`;
export const resolvers = {
Member: {
isLogged: (...args) => {
console.log('args', args); // THIS NEVER TRIGGERS SOMEHOW
return true;
}
}
};
查询
const GET_IS_MEMBER_LOGGED = gql`
query isMemberLogged {
member @client {
name
isLogged
}
}
`;
感谢您的帮助!
【问题讨论】:
-
export const resolvers = { member: {-member小写? ...并且您需要为整个成员提供解析器 -
嗨 xadm。谢谢你的帮助。 Member 是一种类型,因此它不应该像查询解析器那样被喜欢。请你给我看一下完整成员解析器的例子吗?我以为我做对了