Как повторно запросить запрос с параметром args - PullRequest
0 голосов
/ 21 мая 2019

Я хотел бы знать, как передать аргумент во время refetchQueries в Apollo.

Код

submitForm(e) {
        e.preventDefault();
        this.props.addAppleMutation({
            variables: {
                        color: "red"
                        weight: "0.33"
            },
            // stucked here
            refetchQueries: [{ query: loadApplesQuery, variables: {//argument i want to pass} }]
        })
    }

Мой запрос

const loadApplesQuery = gql`
    query($id: ID) {
        apple(id: $id) {
            color
            size
            id
        }
    }
`

1 Ответ

1 голос
/ 21 мая 2019

Да, вы можете сделать это, вы также можете взглянуть на тот же сценарий, который вы хотите решить на

https://www.apollographql.com/docs/react/api/react-apollo#graphql-mutation-options-refetchQueries

так, например, вы можете сделать это с помощью High Order Component (HOC), вы можете сделать что-то вроде этого


const loadApplesQuery = gql`
    query($id: ID) {
        apple(id: $id) {
            color
            size
            id
        }
    }
`;

const addAppleMutation = gql`
    mutation($apple: Apple) {
        addApple(Apple: $apple)
    }
`;

export default graphql(addAppleMutation, {
  name: 'addAppleMutation',
  options: {
    refetchQueries: (mutationResult) => [{
        query: loadApplesQuery,
        variables: {
          id: mutationResult.id,
        }
      }]
  },
})(MyComponent);

и затем в методе submitForm вы можете сделать что-то вроде этого


submitForm(e) {
   this.props.addAppleMutation({ variables : { color: 'green', size: 'small'}});
}

Надеюсь, это поможет вам.

...