【发布时间】:2021-06-20 07:49:08
【问题描述】:
所以我有以下使用 Apollo Graphql 的代码,
每次我单击将触发 onClick 事件的按钮时,该组件都会重新渲染。如果我在突变函数中的then 调用之后添加一些状态更改,则组件基本上会重新渲染两次,一次用于突变重新渲染,一次用于其他状态更改重新渲染,它会在页面。
如何阻止useMutation 重新呈现页面?
import { useMutation, gql } from '@apollo/client';;
import React from 'react';
const ADD_TAGS = gql`
mutation($ids: [ID!]!) {
addTags(ids: $ids) {
id
}
}
`;
export default () => {
const [addTags] = useMutation(ADD_TAGS, {
onCompleted: () => {console.log('on complete')}
});
console.log('render');
return <div>
This is a test idPages
<button onClick={() => addTags({
variables: {
ids: ['123']
}
}).then(data => console.log('finished', data))}>Add</Button>
</div>
}
【问题讨论】:
-
你确定吗?记录了什么? ...重新渲染用于加载状态、新数据...没什么好打的
标签: reactjs graphql react-apollo