lable_studio前端页面逻辑

  1. AppStore 创建

  1. App.jsx 渲染(使用 observer)

  1. 传递 store 给 TopBar

  1. TopBar 访问 store.project(observer 自动跟踪)

  1. 当 store.project 变化时

  1. observer 检测到变化

  1. 自动重新渲染 TopBar

1. App.jsx 的作用

App.jsx 是标注页面的根组件,负责:

主要职责:

  1. 渲染整个标注界面布局
  • TopBar(顶部工具栏)
  • BottomBar(底部工具栏)
  • SidePanels(侧边栏)
  • 主标注区域
  1. 管理页面状态
  • 加载状态(store.isLoading)
  • 无任务状态(store.noTask)
  • 无访问权限(store.noAccess)
  • 标注成功(store.labeledSuccess)
  1. 传递 store 给子组件
  • 第 308 行:<TopBar store={store}/>
  • 第 321 行:<BottomBar store={store}/>
  • 所有子组件都接收同一个 store 实例

架构说明

1. AppStore.js 的作用

  • 位置:web/libs/editor/src/stores/AppStore.js
  • 作用:标注页面的核心状态管理(使用 MobX-State-Tree)
  • 管理内容:
  • project:项目信息
  • task:当前任务
  • annotationStore:标注数据
  • user:用户信息
  • 其他 UI 状态

2. TopBar.jsx 中的 store

  • store 就是 AppStore 的实例
  • 通过 observer 包装,可响应式访问 store.project
  • 在 App.jsx 中传递:<TopBar store={store}/>

2. observer 是什么?

observer 来自 mobx-react,用于让 React 组件响应 MobX 状态变化。

工作原理:

TypeScript 复制代码
// 没有 observer 的普通组件
const TopBar = ({store}) => {
  const project = store.project; // ❌ 读取了,但不会自动更新
  return <div>{project?.id}</div>;
};

// 使用 observer 的组件
const TopBar = observer(({store}) => {
  const project = store.project; // ✅ 读取了,会自动跟踪变化
  return <div>{project?.id}</div>;
});
相关推荐
harrain1 天前
前端svg精微操作局部动态改变呈现工程网架状态程度可视播放效果
前端·svg·工程网架图
独自破碎E1 天前
Spring Boot支持哪些嵌入Web容器?
前端·spring boot·后端
大猫会长1 天前
tailwindcss中,自定义多个背景渐变色
前端·html
xj7573065331 天前
《python web开发 测试驱动方法》
开发语言·前端·python
IT=>小脑虎1 天前
2026年 Vue3 零基础小白入门知识点【基础完整版 · 通俗易懂 条理清晰】
前端·vue.js·状态模式
IT_陈寒1 天前
Python 3.12性能优化实战:5个让你的代码提速30%的新特性
前端·人工智能·后端
赛博切图仔1 天前
「从零到一」我用 Node BFF 手撸一个 Vue3 SSR 项目(附源码)
前端·javascript·vue.js
爱写程序的小高1 天前
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
前端·npm·node.js
loonggg1 天前
竖屏,其实是程序员的一个集体误解
前端·后端·程序员