Как обновить магазин apollo после внесения мутации в Reaction-native? - PullRequest
0 голосов
/ 30 ноября 2018

Я новичок в этом apollo graphql и просто хочу понять, как работает этот магазин обновлений, поскольку каждый раз, когда я делаю мутацию, мне приходится обновлять свое приложение, чтобы увидеть изменения.В следующем примере я добавляю карту в свой кошелек.Поэтому, чтобы увидеть новую карту в моем приложении, мне нужно перезагрузить приложение.

Эта часть взята из AddCard.js, где я могу только добавить карту, но не вижу ее.Так что, как только я произвожу мутацию и goBack() моя карта не отображается, пока я не перезагружу приложение.

Есть идеи, как это исправить?

const GET_ME = gql`
  query me {
    me {
      _id
    }
  }
`;

const GET_WALLET = gql`
  query getUserWallet($u_id: ID!) {
    getUserWallet(u_id: $u_id) {
      _id
    }
  }
`;

const CREATE_CARD = gql`
  mutation($wallet_id: ID!, $cardNo: String!, $exp: String!, $cvc: String!, $card: String! $user: ID!) {
    createPayment(wallet_id: $wallet_id, cardNo: $cardNo, exp: $exp, cvc: $cvc, card: $card, user: $user) {
      _id
    }
  }
`;

const mutationConfig = {
    props: ({ mutate }) => ({
        createPayment: (wallet_id, cardNo, exp, cvc, card, user) => mutate({
            variables: { wallet_id, cardNo, exp, cvc, card, user }
        }),
    })
}

export default compose(
    withApollo,
    graphql(GET_ME, { name: "getMe" }),
    graphql(GET_WALLET, {
        name: "getWallet",
        options: (props) => (
            {
                variables:
                {
                    u_id: props.getMe.me._id
                }
            }
        )
    }),
    graphql(CREATE_CARD, mutationConfig)
)(AddCard); 

1 Ответ

0 голосов
/ 03 декабря 2018

Документация Apollo была обновлена ​​для использования реквизита рендера, а не компонента более высокого порядка.Если вы ознакомитесь с разделом , обновляющим кэш , он покажет вам, как это сделать.Он должен работать аналогично для вашего компонента более высокого порядка.Вы можете передать опцию обновления, которая должна дать вам доступ к кешу.Оттуда вы можете писать напрямую в кеш с помощью writeData / writeQuery или изменять фрагмент с помощью writeFragment.

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

...