Tôi đang cố triển khai đột biến để đăng nhập. Đột biến xác nhận id_token được cung cấp và ghi lại người dùng qua các phiên. Các đột biến chính nó hoạt động (xác minh với GraphiQL), nhưng tôi đang gặp vấn đề tích hợp nó với Relay.Rơ le đăng nhập chuyển tiếp/bộ định tuyến?
Khi người dùng đăng nhập, toàn bộ cửa hàng chuyển tiếp có thể bị thay đổi vì "người xem" là truy vấn gốc. Nhưng tôi không muốn liệt kê toàn bộ cây truy vấn của tôi trong truy vấn chất béo. Nó sẽ là tốt đẹp để có thể xóa toàn bộ cửa hàng bằng cách nào đó, nhưng tôi không thấy một cách để làm điều đó với react-router-relay
.
đột biến 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...
}
}
Cách sử dụng:
Relay.Store.commitUpdate(new LoginMutation({id_token}), {
onSuccess: (resp) => {
history.push('/');
}
});
GraphQL schema:
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
}
Phát hành [v0.8.0] (https://github.com/facebook/relay/releases/tag/v0.8.0) của Relay giới thiệu 'Relay.Environment', bạn có thể khởi tạo và chuyển thể hiện sang' Relay .Renderer'. Nó chưa được ghi chép. Hãy xem một số nhận xét cuối cùng về vấn đề github về vấn đề này: [Triển khai RelayStore.reset()] (https://github.com/facebook/relay/issues/233). –