Skip to content

Commit 2fbaeb0

Browse files
committed
feat(graphql): add dynamic breadcrumbs
https://github.com/martis-git/learn-frontend/issues/279
1 parent 893e47e commit 2fbaeb0

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

examples/graphql/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"react-dom": "^16.13.1",
2020
"react-router": "^5.2.0",
2121
"react-router-dom": "^5.2.0",
22+
"react-router-dynamic-breadcrumbs": "^2.2.0",
2223
"react-scripts": "3.4.3",
2324
"typescript": "~3.7.2"
2425
},

examples/graphql/src/pages/index.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
import React, { lazy, Suspense } from 'react'
22
import { BrowserRouter, Switch, Route, Redirect } from "react-router-dom";
3+
// @ts-ignore
4+
import Breadcrumbs from "react-router-dynamic-breadcrumbs";
5+
import { Breadcrumb, Spin } from "antd";
36

47
const TasksListPage = lazy(() => import("./tasks-list"));
58
const TaskDetailsPage = lazy(() => import("./task-details"));
69

10+
export const routes = {
11+
"/": "Tasks",
12+
"/:id": "Task# :id",
13+
};
14+
715
const Routing = () => (
816
<BrowserRouter>
9-
<Suspense fallback="Loading...">
17+
<Breadcrumbs
18+
mappedRoutes={routes}
19+
WrapperComponent={({ children }: any) => <Breadcrumb>{children}</Breadcrumb>}
20+
LinkComponent={({ children }: any) => <Breadcrumb.Item>{children}</Breadcrumb.Item>}
21+
ActiveLinkComponent={({ children }: any) => <Breadcrumb.Item>{children}</Breadcrumb.Item>}
22+
/>
23+
<Suspense fallback={<Spin />}>
1024
<Switch>
1125
<Route exact path="/" component={TasksListPage} />
1226
<Route exact path="/:id" component={TaskDetailsPage} />

examples/graphql/src/pages/tasks-list/index.tsx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,13 @@
11
import React from 'react'
2-
import { Breadcrumb, Spin, Alert } from "antd";
2+
import { Spin, Alert } from "antd";
33
import { useFetch } from "shared/hooks";
44
import { TaskItem } from "shared/components";
55

6-
// TODO: autogenerate by location
7-
const TasksListTitle = () => (
8-
<Breadcrumb className="page-title">
9-
<Breadcrumb.Item href="/">
10-
TasksList
11-
</Breadcrumb.Item>
12-
</Breadcrumb>
13-
);
14-
156
const TasksList = () => {
167
const { data, error, loading } = useFetch<Task[]>("todos");
178

189
return (
1910
<div className="page page-tasks-list">
20-
<TasksListTitle />
2111
<div className="page-content">
2212
{error && (
2313
<Alert

examples/graphql/yarn.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10015,6 +10015,13 @@ react-router-dom@^5.2.0:
1001510015
tiny-invariant "^1.0.2"
1001610016
tiny-warning "^1.0.0"
1001710017

10018+
react-router-dynamic-breadcrumbs@^2.2.0:
10019+
version "2.2.0"
10020+
resolved "https://registry.yarnpkg.com/react-router-dynamic-breadcrumbs/-/react-router-dynamic-breadcrumbs-2.2.0.tgz#096c7a1d94190ecf5f3619d8fcec3091870f079f"
10021+
integrity sha512-w5vjWnQDbXZ07WNardqhje1Gf3VvGkB6Bv1IKCu3d/opQC9X2mU0P6n031lL35sxknONlEz6aZ2YQb6AU9yYSQ==
10022+
dependencies:
10023+
prop-types "^15.5.10"
10024+
1001810025
react-router@5.2.0, react-router@^5.2.0:
1001910026
version "5.2.0"
1002010027
resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293"

0 commit comments

Comments
 (0)