Skip to content

Page 页面容器 ​

uvx-page 是页面根容器,统一提供主题作用域和页面级 Toast。App 端使用 scroll-view 承载页面内容,Web 与微信小程序端使用普通 view,由页面本身负责滚动。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
3.9+4.11+4.61+4.0+4.41+

小程序端仅支持微信。

平台能力 ​

能力AndroidiOS鸿蒙H5微信
页面根容器和主题作用域√√√√√
滚动方向、边界和滚动条配置√√√--
滚动位置控制及滚动事件√√√--
页面级 Toast√√√√√
内置主题切换按钮√√√--

使用须知

  1. 推荐把 uvx-page 放在页面模板的根部。App 端组件自身已经是滚动容器,除非内容需要独立滚动,否则不要再嵌套 scroll-view、list-view 或 waterflow。
  2. direction、bounces、show-scrollbar、upper-threshold、lower-threshold、scroll-top、scroll-with-animation 和四个滚动事件仅在 App 端生效。Web 与微信小程序端渲染普通 view,需要通过页面滚动 API 和 onPageScroll 处理滚动。
  3. 当前版本 bounces 的实际默认值为 false。direction="none" 可在 App 端关闭页面容器滚动,适合内部已有独立滚动组件的页面。
  4. App 端会在页面中挂载 uvx-theme 主题切换按钮;Web 与微信小程序端不会挂载。

基础用法 ​

vue
<template>
   <uvx-page>
      <view class="page-content">
         <text>页面内容</text>
      </view>
   </uvx-page>
</template>

禁用 App 页面滚动 ​

页面内容由 list-view、waterflow 等组件独立滚动时,把 direction 设为 none,避免 App 端出现嵌套滚动冲突。

vue
<uvx-page direction="none">
   <list-view style="flex: 1;">
      <slot></slot>
   </list-view>
</uvx-page>

监听滚动并返回顶部 ​

App 端通过 scroll 事件获取当前位置,并更新 scroll-top 控制滚动。Web 与微信小程序端应使用 onPageScroll 和 uni.pageScrollTo。

vue
<template>
   <uvx-page
      :scroll-top="pageScrollTop"
      @scroll="handleScroll"
   >
      <view style="height: 1200px;"></view>
      <uvx-button text="返回顶部" @click="handleBackTop"></uvx-button>
   </uvx-page>
</template>

<script lang="uts" setup>
// 当前滚动距离
const scrollTop = ref(0);
// App 页面滚动位置
const pageScrollTop = ref(0);

/**
 * 记录 App 页面滚动位置
 * @param event 滚动事件
 * @returns null
 */
const handleScroll = (event: UniScrollEvent): void => {
   scrollTop.value = event.detail.scrollTop;
};

/**
 * 返回页面顶部
 * @returns null
 */
const handleBackTop = (): void => {
   // #ifdef APP
   // 先同步当前值,避免绑定值未变化时无法触发回顶
   pageScrollTop.value = scrollTop.value;
   nextTick(() => {
      pageScrollTop.value = 0;
   });
   // #endif
   // #ifndef APP
   uni.pageScrollTo({ scrollTop: 0, duration: 300 });
   // #endif
};

// #ifndef APP
/**
 * 记录非 App 页面滚动位置
 * @param event 页面滚动事件
 * @returns null
 */
onPageScroll((event) => {
   scrollTop.value = event.scrollTop;
});
// #endif
</script>

显示页面提示 ​

组件内部包含 uvx-toast,可通过 toast(options) 显示页面提示。

vue
<template>
   <uvx-page ref="uPage">
      <uvx-button text="显示提示" @click="showToast"></uvx-button>
   </uvx-page>
</template>

<script lang="uts" setup>
// 页面容器实例
const uPage = ref<UvxPageComponentPublicInstance | null>(null);

/**
 * 显示页面提示
 * @returns null
 */
const showToast = (): void => {
   uPage.value?.toast({
      message: "操作成功",
      type: "success",
   });
};
</script>

API ​

Props ​

属性说明类型默认值平台
direction滚动方向none | vertical | horizontal | allvertical仅 App
bounces是否启用边界回弹booleanfalse仅 App
show-scrollbar是否显示滚动条booleanfalse仅 App
upper-threshold距顶部或左侧多远时触发 scrolltoupper,单位 pxnumber50仅 App
lower-threshold距底部或右侧多远时触发 scrolltolower,单位 pxnumber50仅 App
scroll-top竖向滚动位置,单位 pxnumber0仅 App
scroll-with-animation设置 scroll-top 时是否使用滚动动画booleantrue仅 App

Events ​

事件说明参数平台
scroll滚动时触发event: UniScrollEvent仅 App
scrolltoupper滚动到顶部或左侧阈值时触发event: UniScrollToUpperEvent仅 App
scrolltolower滚动到底部或右侧阈值时触发event: UniScrollToLowerEvent仅 App
scrollend滚动结束时触发event: UniScrollEvent仅 App

Methods ​

方法说明参数平台
toast(options)显示页面内置 Toastoptions: ToastOptions,字段见 Toast 消息提示全平台

Slots ​

插槽说明平台
default页面内容全平台

参考 ​

uvx-ui · uni-app x 组件库