createRefetchContainer 的 Refetch 方法不执行回调
Refetch method for createRefetchContainer doesn't execute callback
我的 QueryRenderer
使用以下查询:
```
graphql`
query page_Query {
viewer {
id
...MountedRenderer_viewer
}
}
`
这就是我的 createRefetchContainer
的样子:
```
createRefetchContainer(
MountComponent,
graphql`
fragment MountedRenderer_viewer on User @argumentDefinitions(show: { type: "Boolean", defaultValue: false }) {
id
name @include(if: $show)
}
`,
graphql`
query OwnershipsRenderer_Query($show: Boolean!) {
viewer {
...MountedRenderer_viewer @arguments(show: $show)
}
}
`,
);
在我的 MountComponent
组件中,我在 componentDidMount 中执行此操作:
```
this.props.relay.refetch(
{ show: true },
err => {
console.log('done!');
},
{ force: true },
);
我查看我的商店,发现 "name" 的数据已提取并与商店合并。但是,MountComponent
不会使用新数据重新呈现,也不会记录 "done"。 MountComponent
不应该订阅观众吗?
我相信 refetch
的签名是 refetch(refetchVariables, renderVariable, observerOrCallback, options)
所以你的回调应该是第三个参数。
我的 QueryRenderer
使用以下查询:
```
graphql`
query page_Query {
viewer {
id
...MountedRenderer_viewer
}
}
`
这就是我的 createRefetchContainer
的样子:
```
createRefetchContainer(
MountComponent,
graphql`
fragment MountedRenderer_viewer on User @argumentDefinitions(show: { type: "Boolean", defaultValue: false }) {
id
name @include(if: $show)
}
`,
graphql`
query OwnershipsRenderer_Query($show: Boolean!) {
viewer {
...MountedRenderer_viewer @arguments(show: $show)
}
}
`,
);
在我的 MountComponent
组件中,我在 componentDidMount 中执行此操作:
```
this.props.relay.refetch(
{ show: true },
err => {
console.log('done!');
},
{ force: true },
);
我查看我的商店,发现 "name" 的数据已提取并与商店合并。但是,MountComponent
不会使用新数据重新呈现,也不会记录 "done"。 MountComponent
不应该订阅观众吗?
我相信 refetch
的签名是 refetch(refetchVariables, renderVariable, observerOrCallback, options)
所以你的回调应该是第三个参数。