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>;
});
相关推荐
我叫黑大帅12 分钟前
前端如何竖屏固定视口背景
前端·javascript·面试
abcy07121314 分钟前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
IT_陈寒38 分钟前
Vite这个坑我帮你踩了,动态导入居然这样才生效
前端·人工智能·后端
swipe41 分钟前
Mem0 x Agent 实战系列:分层记忆 + 三路召回,搭建真正可用的长期记忆层
前端·javascript·面试
鹤鸣的日常1 小时前
前端运行时动态环境变量方案
前端·react.js·docker·前端框架·vue·gitlab
Lee川1 小时前
Event Loop 面试通关:从原理到口述再到实战
前端·面试
kyriewen1 小时前
手写 call、apply、bind:从原理到实现,附 3 个最容易忽略的边界情况
前端·javascript·面试
用户2181697049301 小时前
swift (三) 枚举 结构体 类
前端
胡萝卜术1 小时前
从内存视角重新认识 JavaScript 数据类型:一份深度学习笔记
前端·javascript·面试
IVEN_1 小时前
记一次诡异的前端白屏故障:Nginx Proxy Cache 内存缓存"幽灵"事件
前端·nginx