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>;
});
相关推荐
摸鱼的春哥5 小时前
Agent教程14:记忆才是Agent开发的核心
前端·javascript·后端
明月_清风5 小时前
Clipboard API 深度实战:如何同时存入“纯文本”和“富文本”两种格式?
前端·javascript
明月_清风5 小时前
权限陷阱:为什么你的“点击复制”在某些浏览器或 iframe 里会失效?
前端·javascript
掘金安东尼15 小时前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼15 小时前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
灵感__idea17 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
yinuo17 小时前
轻松接入大语言模型API -04
前端
袋鼠云数栈UED团队18 小时前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher18 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati18 小时前
非常友好的Vue 3 生命周期详解
前端·面试