5m
🎯 您的目标是在 Catstronauts 应用程序模块页面上显示查询结果。
页面设置任务
查询获取任务
路由解决方案
Module
组件导入到 client/pages/index.js
.
import Module from "./module";
Module
路由位于 Routes
子代中,具有正确的路径。
<Route element={<Module />} path="/track/:trackId/module/:moduleId" />
模块页面解决方案
完成的 module.js
文件位于 client/src/pages
应如下所示:
import React from "react";import { useQuery, gql } from "@apollo/client";import { useParams } from "react-router-dom";import { Layout, ModuleDetail, QueryResult } from "../components";/*** GET_MODULE_AND_PARENT_TRACK gql query to retrieve a specific module and its parent track,* both needed for the ModuleDetail component*/export const GET_MODULE_AND_PARENT_TRACK = gql`query GetModuleAndParentTrack($moduleId: ID!, $trackId: ID!) {module(id: $moduleId) {idtitlecontentvideoUrl}track(id: $trackId) {idtitlemodules {idtitlelength}}}`;/*** Module page fetches both parent track and module's data from the gql query GET_MODULE_AND_PARENT_TRACK* and feeds them to the ModuleDetail component*/const Module = () => {const { moduleId, trackId } = useParams();const { loading, error, data } = useQuery(GET_MODULE_AND_PARENT_TRACK, {variables: { moduleId, trackId },});return (<Layout fullWidth><QueryResult error={error} loading={loading} data={data}><ModuleDetail track={data?.track} module={data?.module} /></QueryResult></Layout>);};export default Module;
就是这样!请记住,如果您遇到困难,可以在仓库的 final
文件夹中找到一个正常运行的应用程序的完整解决方案。