refetchQueries не работает в собственном приложении - PullRequest
0 голосов
/ 23 декабря 2018

Я работаю с нативным приложением, используя GraphQL.В этом приложении существует список помеченных пользователем репозиториев и кнопка для просмотра пользователем пометить репозиторий, но проблема в том, что когда пользователь нажимает кнопку «звездочка», пользовательский интерфейс, по-видимому, не перезапускает запрос userInfo.

функции:

userInfo = async (query, repoNumber) => {
    const result = await this.props.client.query({
      query: USER_INFO_QUERY,
      variables: { query, repoNumber },
    });
    const user = result.data.user;
    this.setState({ user });
}

addStar = (repoId) => {
  this.props.client.mutate({
    mutation: ADD_STAR_MUTATION,
    variables: { repoId },
    refetchQueries: [{
      query: USER_INFO_QUERY,
      variables: { query: this.state.user.login, repoNumber: 10 },
    }]
  });
}

removeStar = (repoId) => {
  this.props.client.mutate({
    mutation: REMOVE_STAR_MUTATION,
    variables: { repoId },
    refetchQueries: [{
      query: USER_INFO_QUERY,
      variables: { query: this.state.user.login, repoNumber: 10 },
    }]
  });
}

Запрос:

export const USER_INFO_QUERY = gql`
  query UserInfoQuery($query: String!, $repoNumber: Int!) {
    user (login: $query) {
      id
      login
      avatarUrl
      email
      url
      name
      starredRepositories(first: $repoNumber) {
        totalCount
        nodes {
          name
          description
          viewerHasStarred
          id
        }
      }
  }
}`;

Мутации:

export const ADD_STAR_MUTATION = gql`
  mutation AddStar($repoId: ID!) {
    addStar (input: { starrableId: $repoId }) {
      clientMutationId
      starrable {
        viewerHasStarred
      }
    }
  }
`;


export const REMOVE_STAR_MUTATION = gql`
  mutation RemoveStar($repoId: ID!) {
    removeStar (input: { starrableId: $repoId }) {
      clientMutationId
      starrable {
        viewerHasStarred
      }
    }
  }
`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...