Skip to content

content/docs/utilities/runner.mdx §Add Custom Routes 教读者用 react-router-dom 改写 App.tsx,但 runner 不依赖它,路由是手写的 history.pushState #3618

Description

@yinlianghui

越界发现,记录于 #3577 期间通读全文时。未在该 PR(#3616)中顺手修改 —— 该单锁死在幽灵目录 / 内置示例 schema / Package Information 三条上,这是另一类断言(不存在的依赖 + 与实现相反的路由模型)。

事实(对 origin/main 复核,切点 622c23082)

## Extending the Runner### Add Custom Routes 让读者 "Edit src/App.tsx",给的是一段 react-router 代码:

import { BrowserRouter, Routes, Route } from 'react-router-dom'

两个问题:

  1. react-router-dom 不是 @object-ui/runner 的依赖。 packages/runner/package.jsondependencies 是:@object-ui/{components,core,plugin-charts,plugin-kanban,react,types}class-variance-authorityclsxlucide-reactreactreact-domtailwind-mergetailwindcss-animate。照抄这段会直接 Failed to resolve import "react-router-dom"
  2. Runner 根本不是这个路由模型。 packages/runner/src/App.tsx 自己维护 currentPath state,导航走 window.history.pushState + popstate 监听,路径直接喂给 MetadataLoader.loadPage(path) —— 即路由由元数据决定(src/app-data/pages/**.json?api= 后端的 pages/<path>.json),不是在 App.tsx 里手写 <Route> 表。fix(runner): 站内导航保留 query string,?api= 不再被抹掉 #3594(查询串保留)与 content/docs/utilities/runner.mdx 三处结构性陈述与实现不符:src/schemas 目录、「内置示例 schema」、Package Information 的版本与发布状态 #3577 的 Metadata Loading 一节都建立在这个模型上。

所以这一节不只是「依赖没装」,它描述的扩展方式与 Runner 的设计方向相反:读者要加一个页面,正确做法是加一个 JSON 文件(本页 ### Add Custom Schemas 已经这么写了),不是改 App.tsx

建议

#3533 家族的一贯口径处理(文档不许描述不存在的能力):整个 ### Add Custom Routes 小节删除,或改写成一句指向 ### Add Custom Schemas 的说明 —— 「Runner 的路由来自元数据:src/app-data/pages/ 下的文件名即路由,无需改代码」。若确实要保留「用 react-router 包一层」的玩法,那是另一个产品决定,需要先真的把依赖加进去,不该只留在文档里。

顺带:同一小节的示例里 <Home /><Dashboard /><CustomPage /> 三个组件在包里也都不存在,删除后一并消失。


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions