gpt4 book ai didi

react-router - 中继/路由器登录突变?

转载 作者:行者123 更新时间:2023-12-04 16:07:04 26 4
gpt4 key购买 nike

我正在尝试为登录实现突变。突变验证提供的 id_token 并通过 session 登录用户。突变本身有效(使用 GraphiQL 验证),但我在将其与 Relay 集成时遇到了问题。

当用户登录时,整个中继存储可能会改变,因为“查看者”是根查询。但我不想在胖查询中列出我的整个查询树。能够以某种方式清除整个商店会很好,但我看不到 react-router-relay 这样做的方法.

继电器突变:

export default class LoginMutation extends Relay.Mutation {
getMutation() {
return Relay.QL`mutation {login}`;
}

getVariables() {
return {
id_token: this.props.id_token
};
}

getFatQuery() {
// TODO: list everything?
return Relay.QL`
fragment on LoginPayload {
viewer
}
`;
}

getConfigs() {
return []; // TODO: not sure what to return...
}
}

用法:
Relay.Store.commitUpdate(new LoginMutation({id_token}), {
onSuccess: (resp) => {
history.push('/');
}
});

GraphQL 架构:
input LoginInput {
id_token: String!
clientMutationId: String!
}

type LoginPayload {
viewer: Viewer
clientMutationId: String!
}

type Mutation {
login(input: LoginInput!): LoginPayload
}

interface Node {
id: ID!
}

type Query {
viewer: Viewer
node(id: ID!): Node
}

type Viewer implements Node {
id: ID!
user: User
ships: [Ship]
ship(id: ID!): Ship
}

schema {
query: Query
mutation: Mutation
}

最佳答案

fatQuery , 当您列出 non-scalar字段,中继将假定任何连接的字段可能已更新。在某些需要参数的字段中(例如, (first: n) ),您可以使用 @relay(pattern: true)绕过这个要求。 This SO question讨论该功能。

关于react-router - 中继/路由器登录突变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com