# o2-common-issues > 常见问题与排查建议(摘自 100.常见问题) - Author: moushu - Repository: Moushudyx/working-skills - Version: 20260207145754 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/Moushudyx/working-skills - Web: https://mule.run/skillshub/@@Moushudyx/working-skills~o2-common-issues:20260207145754 --- --- name: o2-common-issues description: 常见问题与排查建议(摘自 100.常见问题) --- # 网络请求与异步处理 - 推荐使用 `async/await`,避免回调地狱。 - 对“只需要请求一次”的场景可用缓存 Promise。 ```jsx // 只执行一次的请求包装 const loadOnce = (fn) => { let promise; return async (...args) => (promise ? promise : (promise = fn(...args))); }; ``` # 单列编辑多个字段 - 使用列的 `edit`/`normal` 插槽自定义渲染。 ```jsx {{ normal: ({ row }) => {[row.start, row.end].filter(Boolean).join('~')}, edit: ({ row }) => , }} ``` # 获取查询表单筛选参数 - 使用 `await option.methods.getParams()` 获取上一次查询参数。 - 用户未触发查询时不会更新参数。 # 页面之间状态共享 - 使用 `reactive` 在模块级创建共享状态,并导出 getter。 - 生命周期钩子只能在 `setup` 内调用。 # 隐藏列但保留查询 - `hide` 会同时隐藏列表与查询表单。 - 若只想保留查询能力,可改用自定义查询表单或单独的筛选区。 # O2Table 响应卡顿 - 将表格渲染包进 `computed`,缩小响应式依赖范围。 ```jsx const tableNode = computed(() => {/* columns */}); return () => <>{tableNode.value}; ``` # 动态 required - `required` 支持函数,参数包含 `row`。 ```jsx !!row.n1} /> ``` # 动态增删列顺序 - `1.4.19` 之前动态增删列可能顺序错乱,升级或确保 `key` 唯一。 # Hooks 使用 - 新版 hooks 支持插入位置与中断执行,适合控制执行顺序。