2016-05-12 18 views
6

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 
} 
+0

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). –

Trả lời

0

Trong fatQuery, khi bạn liệt kê một lĩnh vực non-scalar, Relay sẽ cho rằng bất kỳ trường được kết nối có thể có u pdated. Trong các trường nhất định yêu cầu đối số (ví dụ: (first: n)), bạn có thể sử dụng @relay(pattern: true) để bỏ qua yêu cầu này. This SO question thảo luận về tính năng này.

Các vấn đề liên quan