Skip to content

MobilePage

RootPageSubPageTabRootPage 是移动端页面壳组件,适合 H5 页面、嵌入式活动页和轻量业务应用。它们从业务项目迁移而来,但在本库中不绑定 Mantine、Tabler、react-router 或业务版权组件。

Basic

RootPage 提供顶部标题栏、内容区、可选底部安全区、版权插槽和下拉刷新能力。

常见场景

子页面返回

SubPageRootPage 基础上增加返回按钮,返回动作通过 onBack 交给业务侧处理。

下拉刷新

传入 onPullRefresh 后,内容区在滚动顶部支持移动端下拉刷新;嵌入式页面也可以从页头向下拖动触发。回调 Promise 结束后自动退出刷新态。

底部导航页

TabRootPage 组合 RootPage 和底部安全区导航,适合首页类多 Tab 页面。

Usage

tsx
import { RootPage, SubPage, TabRootPage } from "@ldkj/web-ui";

export function Example() {
  return (
    <SubPage
      title="订单详情"
      onBack={(target) => {
        if (target === "$prev") {
          window.history.back();
        }
      }}
      onPullRefresh={() => fetch("/api/orders/refresh")}
      contentProps={{ style: { padding: 16, gap: 12 } }}
    >
      <section>订单内容</section>
    </SubPage>
  );
}

API

RootPage

属性说明类型默认值
title标题内容,设为 false 时不渲染头部React.ReactNode | false-
documentTitle写入 document.title 的页面标题string-
headerLeft头部左侧插槽React.ReactNode-
headerRight头部右侧插槽React.ReactNode-
onPullRefresh下拉刷新回调,支持 Promise() => void | Promise<void>-
refreshing受控刷新态,用于外部请求或桌面 Demo 展示刷新条booleanfalse
pullRefreshLabels自定义下拉、释放、刷新中文案PagePullRefreshLabels-
contentProps内容区原生属性透传div props-
footer根节点底部插槽React.ReactNode-
copyright版权区域;true 使用默认文案,也可传自定义节点React.ReactNode | boolean-
safeAreaBottom是否在尾部补底部安全区booleanfalse
headerSticky头部是否吸顶booleantrue
className / style根节点样式string / React.CSSProperties-

SubPage

SubPage 继承 RootPage,支持 documentTitleonPullRefreshrefreshingpullRefreshLabelscontentPropscopyright 等页面壳属性,并增加返回相关属性。

属性说明类型默认值
back返回目标。false 隐藏默认返回按钮"$parent" | "$prev" | string | false"$parent"
backLabel返回按钮可访问名称string"返回"
backIcon自定义返回图标React.ReactNode-
onBack点击返回按钮回调(target, event) => void-
headerLeft自定义左侧内容;存在时覆盖默认返回按钮React.ReactNode-

TabRootPage

TabRootPage 继承 RootPage,并增加底部 Tab 属性。

属性说明类型默认值
tabs底部导航配置PageTabDefinition[]-
tabId当前激活 Tab idstring-
onTabChange点击 Tab 回调(tabId, tab) => void-
tabContentId内容区 idstring-
tabContentPropsTab 内容区属性透传div props-
tabBarProps底部导航容器属性透传div props-
copyright内容区尾部版权区域React.ReactNode | boolean-

PageTabDefinition

属性说明类型默认值
idTab 唯一标识string-
titleTab 文案React.ReactNode-
iconTab 图标或按激活态渲染的函数React.ReactNode | (active) => React.ReactNode-
route业务路由标识,仅透传给回调中的 tab 对象string-
disabled是否禁用booleanfalse

行为规则 / 优先级

  • RootPage 只负责页面壳结构,不内置业务路由、接口请求或版权实现。
  • title=false 时不渲染头部;否则头部左右插槽各保留最小宽度,标题居中并截断。
  • 下拉刷新仅在内容区滚动顶部生效;可从内容区或页头向下拖动触发,onPullRefresh 返回 Promise 时,内部刷新态持续到 Promise settled。
  • refreshing 可由外部受控显示刷新条,适合按钮刷新、接口轮询或文档演示;它不会自动触发 onPullRefresh
  • SubPageheaderLeft 优先级高于默认返回按钮;back=false 会隐藏默认返回按钮。
  • TabRootPage 的 Tab 点击只触发 onTabChange,不会主动读取 route 或执行导航。

Notes

  • 业务侧使用 react-router 时,建议在 onBackonTabChange 中调用 navigate,不要把路由实例传入组件库。
  • 图标建议传入本项目已有 Icon 组件、SVG 组件或业务图标节点。
  • 页面根节点默认 min-height: 100dvh,嵌入文档或弹窗时可通过 style 覆盖高度。
  • 下拉刷新依赖触摸事件,桌面浏览器可用移动设备模拟模式验证。