2

我对现代接力很陌生,所以我可能在这里做错了。此外,我很难找到有关如何完成此操作的文档。

我有一个应用程序,它提供了一个在 React 中构建的虚拟目录结构视图,其结构如下:

<ProjectDrive>
  <QueryRenderer>
     <ProjectDriveContainer>
        <ProjectDriveComponent>

当视图加载中指定的 GraphQL 查询时,将QueryRenderer执行并将数据传递给ProjectDriveContainer组件并正确呈现。这个组件是这样创建的:

const ProjectDriveContainer = createRefetchContainer(ProjectDriveComponent, {
        processMeta: TrackingBoardFragment.processMeta,
        directory: ProjectDriveComponentFragment.directory
}, ProjectDriveComponentRefetchQuery);

更改目录的方法使用不同的变量执行重新获取,我可以看到此查询正在执行并在浏览器的网络选项卡中返回正确的数据。该componentWillReceiveProps方法接收新的道具,但这些是旧的原始道具 - 即新数据没有替换道具中的对象。

我的查询如下所示:

原始查询

query DriveDataQuery($processId: Int!, $boardClass: String!, $boardType: String!, $filters: JSONString, $directoryType: DirectoryType!, $root: Boolean!, $directoryId: ID) {
  processMeta(processId: $processId, boardClass: $boardClass, boardType: $boardType, filters: $filters) {
    ...TrackingBoardComponent_processMeta
  }
  userProcessOptions(processId: $processId) {
    ...NavbarComponent_userProcessOptions
  }
  directory(processId: $processId, directoryType: $directoryType, root: $root, directoryId: $directoryId) {
    ...ProjectDriveComponent_directory
  }
}

重新获取查询:

query ProjectDriveComponentRefetchQuery($processId: Int, $directoryId: ID!, $directoryType: DirectoryType!, $root: Boolean!) {
    directory(processId: $processId, directoryType: $directoryType, root: $root, directoryId: $directoryId) {
        ...ProjectDriveComponent_directory
    }
}

我在这里想念什么?

4

0 回答 0