我的突变如下:
<Mutation
mutation={ADD_NEW_SLOT}
refetchQueries={() => [{ query: GET_COMPANY_ADDRESSES, variables: { companyId: this.props.session.company.id } }]}
awaitRefetchQueries={true}
>
.......
</Mutation>
从父组件导出 GET_COMPANY_ADDRESSES 的位置。
但是突变完成后它不会刷新。
我在做什么错了?
更新
父级组件中渲染功能的返回如下:
<Query query={GET_COMPANY_ADDRESSES} variables={{companyId: session.company.id}} notifyOnNetworkStatusChange={true} fetchPolicy={'cache-and-network'}>
{({loading, error, refetch, data}) => {
if (loading) return <LoadingIndicator/>;
if (error) return <ErrorIndicator description={error.message}/>;
const treeNodes = convertSlotsToTree(data);
const address = data.companyAddresses[1];
return (
<AddSlot address={address}
toggleSlotForm={this.props.togglePanel}
session={this.props.session}/>
)
}}
</Query>
graphql查询位于同一文件中,如下所示:
export const GET_COMPANY_ADDRESSES = gql`
query CompanyAddresses($companyId: Int!) {
companyAddresses(companyId: $companyId) {
id
name
default
compound
address {
id
addressFull
countryCode
city
postCode
slotSet{
id
area
zone
aisle
side
level
position
disabled
col
printEntry
fullName
}
}
}
}
`;
答案 0 :(得分:0)
它仍然无法与react-apollo 3.1.x一起使用,而没有解决方法。
如果您同时使用这两件事,更新将发送到Query:
Query
设置选项:fetchPolicy="cache-and-network"
(您已经使用过)。refetchQueries
,并使用Query
的{{1}}。将函数附加到refetch
的{{1}},然后直接从Mutation
调用onCompleted
。您应该在HTTP请求中看到graphql查询,并且UI也应该更新自身。注意。尽管我猜缓存已更新,但UI却无法使用fetchPolicy的“缓存优先”功能。