मैं लॉगिन के लिए एक उत्परिवर्तन लागू करने की कोशिश कर रहा हूं। उत्परिवर्तन प्रदान किए गए id_token को मान्य करता है और सत्र के माध्यम से उपयोगकर्ता को लॉग करता है। उत्परिवर्तन स्वयं काम करता है (GraphiQL के साथ सत्यापित), लेकिन मुझे रिले के साथ इसे एकीकृत करने में समस्याएं हैं।रिले/राउटर लॉगिन उत्परिवर्तन?
जब कोई उपयोगकर्ता लॉग इन करता है, तो संपूर्ण व्यू स्टोर संभवतया बदलता है क्योंकि "दर्शक" मूल क्वेरी है। लेकिन मैं वसा पूछताछ में अपने पूरे प्रश्न पेड़ को सूचीबद्ध नहीं करना चाहता हूं। किसी भी तरह से पूरे स्टोर को साफ़ करने में सक्षम होना अच्छा होगा, लेकिन मुझे 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
}
रिलीज [v0.8.0] (रिले के https://github.com/facebook/relay/releases/tag/v0.8.0) 'रिले.इन्वायरमेंट' पेश करता है, जिसे आप तत्काल कर सकते हैं और 'रिले' .Renderer'। यह अभी तक दस्तावेज नहीं है। इस पर एक github मुद्दे की आखिरी कुछ टिप्पणियां देखें: [RelayStore.reset लागू करें) (https://github.com/facebook/relay/issues/233)। –