2016-11-01 1 views
1

Ich habe die folgende Abfrage:Apollo GraphQL: Eine Abfrage zweimal mit apolloClient.query aufrufen?

const GET_MY_USERINFOFORIMS_QUERY = gql` 
query($userID: String!){ 
    myUserDataForIMs(userID:userID){ 
    name_first 
    name_last 
    picture_medium 
    } 
} `; 

const withUserInfoForIMs = graphql(GET_MY_USERINFOFORIMS_QUERY, { 
    options({ userID }) { 
     return { 
      variables: { userID: `${userID}`} 
     }; 
    } 
    , 
    props({ data: { loading, myUserDataForIMs } }) { 
     return { loading, myUserDataForIMs }; 
    }, 
    name: 'GET_MY_USERINFOFORIMS_QUERY', 
}); 

Vom Apollo docs, es sieht aus wie ich in der Lage sein kann, aus dem Inneren der Komponente zweimal diese Abfrage zu rufen, mit apolloClient.query, so etwas wie dies zu tun:

client.query({ query: query1 }) 
client.query({ query: query2 }) 

Gibt es eine Möglichkeit, die Abfrage zweimal aufzurufen und jedes Mal eine andere Benutzer-ID zu übergeben?

Antwort

1

Es gefunden. :)

 const localThis = this; 
     this.props.ApolloClientWithSubscribeEnabled.query({ 
      query: GET_MY_USERINFOFORIMS_QUERY, 
      variables: {userID: fromID}, 
     }).then((result) => { 
      localThis.setState({ fromAvatar: result.data.myUserDataForIMs[0].picture_thumbnail }); 
     }); 

     this.props.ApolloClientWithSubscribeEnabled.query({ 
      query: GET_MY_USERINFOFORIMS_QUERY, 
      variables: {userID: toID}, 
     }).then((result) => { 
      localThis.setState({ toAvatar: result.data.myUserDataForIMs[0].picture_thumbnail }); 
     }); 

Wenn es einen besseren/effizienteren Weg gibt, bitte posten Sie es.

0

Sie können dies tun, indem refetch() Methode des Apollo in Requisiten Ihre Komponente neben den Daten:

const withUserInfoForIMs = graphql(GET_MY_USERINFOFORIMS_QUERY, { 
    options({ userID }) { 
     return { 
      variables: { userID: `${userID}`} 
     }; 
    }, 
    props({ data: { refetch, loading, myUserDataForIMs } }) { 
     return { refetch, loading, myUserDataForIMs }; 
    }, 
    name: 'GET_MY_USERINFOFORIMS_QUERY', 
}); 

... dann irgendwo in der Komponente, können Sie die Daten wieder beschaffen „von Hand“:

theUserWasChangedSomehow(userID) { 
    this.props.refetch({ userID }); 
} 
Verwandte Themen