路由和目录

路由是基于著名的 React Router 库开发。 React 客户端带有单一的入口文件 src/routing.ts 用来定义能放入主菜单的界面:

menuItems.push({
  pathPattern: '/pets', // 路径 pattern 也可以带一些参数,比如:/pets/:petId?
  menuLink: '/pest',
  component: PetBrowser, // 将被渲染的组件,需要在 `routes.ts` 引入
  caption: 'Pets' // 菜单项标题
});

src/App.tsx 文件包含 Switch 组件,可以根据 URL 路径渲染界面:

  <Switch>
    <Route exact={true} path="/" component={HomePage}/>
  {collectRouteItems(menuItems).map(route => (  // 从主菜单和子菜单获取所有路由
  <Route key={route.pathPattern} path={route.pathPattern} component={route.component}/>
    )}
  </Switch>

如需创建一个结构化的菜单,可以手动在 Switch 组件中添加 Route 或者对 routes.ts 里面的定义的结构做定制化修改。

子菜单

创建子菜单可以在 routes.ts 里面创建 SubMenu 实例,然后添加到 menuItems

// 这是在 UserSettings 菜单下想看到的菜单项
const userProfileRouteItem = {
  pathPattern: "/profile",
  menuLink: "/profile",
  component: UserProfile,
  caption: "UserProfile"
};

// 子菜单
const userSettingsSubMenu = {
  caption: 'UserSettings', // 在 src/i18n/en.json 内添加 router.UserSettings 键值,这样有正确的翻译。
  items: [userProfileRouteItem]};

// 菜单配置中加入子菜单
menuItems.push(userSettingsSubMenu);

子菜单可以无限嵌套。一个子菜单可以用在另一个里面。