私は Relay Modern にまったく慣れていないので、ここで何か間違ったことをしている可能性があります。また、これをどのように行うべきかについてのドキュメントを見つけるのに苦労しています。
次の構造を持つ React に組み込まれた仮想ディレクトリ構造ビューを表示するアプリがあります。
<ProjectDrive>
<QueryRenderer>
<ProjectDriveContainer>
<ProjectDriveComponent>
ビューが読み込まれると、 で指定された GraphQL クエリQueryRenderer
が実行され、データがコンポーネントに渡され、ProjectDriveContainer
正しくレンダリングされます。このコンポーネントは次のように作成されます。
const ProjectDriveContainer = createRefetchContainer(ProjectDriveComponent, {
processMeta: TrackingBoardFragment.processMeta,
directory: ProjectDriveComponentFragment.directory
}, ProjectDriveComponentRefetchQuery);
ディレクトリを変更するメソッドは、さまざまな変数を使用して再フェッチを実行します。ブラウザのネットワーク タブで、このクエリが実行され、正しいデータが返されるのを確認できます。メソッドは新しい props を受け取りますcomponentWillReceiveProps
が、これらは古い元の props です。つまり、新しいデータは props 内のオブジェクトを置き換えていません。
私のクエリは次のようになります。
元のクエリ
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
}
}
ここで何が欠けていますか?