createRefetchContainer的refetch方法不执行回调

时间:2018-04-04 09:22:53

标签: relayjs relay relaymodern

我的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 },
      );

我查看我的商店,我看到“名称”的数据被提取并与商店合并。但是,MountComponent不会使用新数据重新呈现,也不会记录“完成”。 MountComponent不应该订阅观众吗?

1 个答案:

答案 0 :(得分:1)

我相信refetch的签名是refetch(refetchVariables, renderVariable, observerOrCallback, options)所以你的回调应该是第三个参数。