Как обновить магазин apollo после внесения мутации в Reaction-native?
Я новичок в этом 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);
0 ответов
Документация Apollo была обновлена для использования реквизита рендера, а не компонента более высокого порядка. Если вы ознакомитесь с разделом обновления кеша, он покажет вам, как это сделать. Он должен работать аналогично для вашего компонента более высокого порядка. Вы можете передать опцию обновления, которая должна дать вам доступ к кешу. Оттуда вы можете писать напрямую в кеш с помощью writeData/writeQuery или вы можете изменить фрагмент с помощью writeFragment.
Надеюсь, это поможет!