123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- /*! *****************************************************************************
- Copyright (c) 2024 Tencent, Inc. All rights reserved.
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- ***************************************************************************** */
- declare namespace WechatMiniprogram.Page {
- type Instance<
- TData extends DataOption,
- TCustom extends CustomOption
- > = OptionalInterface<ILifetime> &
- InstanceProperties &
- InstanceMethods<TData> &
- Data<TData> &
- TCustom
- type Options<
- TData extends DataOption,
- TCustom extends CustomOption
- > = (TCustom &
- Partial<Data<TData>> &
- Partial<ILifetime> & {
- options?: Component.ComponentOptions
- }) &
- ThisType<Instance<TData, TCustom>>
- type TrivialInstance = Instance<IAnyObject, IAnyObject>
- interface Constructor {
- <TData extends DataOption, TCustom extends CustomOption>(
- options: Options<TData, TCustom>
- ): void
- }
- interface ILifetime {
- /** 生命周期回调—监听页面加载
- *
- * 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
- */
- onLoad(
- /** 打开当前页面路径中的参数 */
- query: Record<string, string | undefined>
- ): void | Promise<void>
- /** 生命周期回调—监听页面显示
- *
- * 页面显示/切入前台时触发。
- */
- onShow(): void | Promise<void>
- /** 生命周期回调—监听页面初次渲染完成
- *
- * 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
- *
- * 注意:对界面内容进行设置的 API 如`wx.setNavigationBarTitle`,请在`onReady`之后进行。
- */
- onReady(): void | Promise<void>
- /** 生命周期回调—监听页面隐藏
- *
- * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。
- */
- onHide(): void | Promise<void>
- /** 生命周期回调—监听页面卸载
- *
- * 页面卸载时触发。如`redirectTo`或`navigateBack`到其他页面时。
- */
- onUnload(): void | Promise<void>
- /** 生命周期回调—监听路由动画完成
- *
- * 路由动画完成时触发。如 wx.navigateTo 页面完全推入后 或 wx.navigateBack 页面完全恢复时。
- */
- onRouteDone(): void | Promise<void>
- /** 监听用户下拉动作
- *
- * 监听用户下拉刷新事件。
- * - 需要在`app.json`的`window`选项中或页面配置中开启`enablePullDownRefresh`。
- * - 可以通过`wx.startPullDownRefresh`触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
- * - 当处理完数据刷新后,`wx.stopPullDownRefresh`可以停止当前页面的下拉刷新。
- */
- onPullDownRefresh(): void | Promise<void>
- /** 页面上拉触底事件的处理函数
- *
- * 监听用户上拉触底事件。
- * - 可以在`app.json`的`window`选项中或页面配置中设置触发距离`onReachBottomDistance`。
- * - 在触发距离内滑动期间,本事件只会被触发一次。
- */
- onReachBottom(): void | Promise<void>
- /** 用户点击右上角转发
- *
- * 监听用户点击页面内转发按钮(`<button>` 组件 `open-type="share"`)或右上角菜单“转发”按钮的行为,并自定义转发内容。
- *
- * **注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮**
- *
- * 此事件需要 return 一个 Object,用于自定义转发内容
- */
- onShareAppMessage(
- /** 分享发起来源参数 */
- options: IShareAppMessageOption
- ):
- | ICustomShareContent
- | IAsyncCustomShareContent
- | Promise<ICustomShareContent>
- | void
- | Promise<void>
- /**
- * 监听右上角菜单“分享到朋友圈”按钮的行为,并自定义分享内容
- *
- * 本接口为 Beta 版本,暂只在 Android 平台支持,详见 [分享到朋友圈 (Beta)](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html)
- *
- * 基础库 2.11.3 开始支持,低版本需做兼容处理。
- */
- onShareTimeline(): ICustomTimelineContent | void
- /** 页面滚动触发事件的处理函数
- *
- * 监听用户滑动页面事件。
- */
- onPageScroll(
- /** 页面滚动参数 */
- options: IPageScrollOption
- ): void | Promise<void>
- /** 当前是 tab 页时,点击 tab 时触发,最低基础库: `1.9.0` */
- onTabItemTap(
- /** tab 点击参数 */
- options: ITabItemTapOption
- ): void | Promise<void>
- /** 窗口尺寸改变时触发,最低基础库:`2.4.0` */
- onResize(
- /** 窗口尺寸参数 */
- options: IResizeOption
- ): void | Promise<void>
- /**
- * 监听用户点击右上角菜单“收藏”按钮的行为,并自定义收藏内容。
- * 基础库 2.10.3,安卓 7.0.15 版本起支持,iOS 暂不支持
- */
- onAddToFavorites(options: IAddToFavoritesOption): IAddToFavoritesContent
- /** 每当小程序可能被销毁之前会被调用,可以进行退出状态的保存。最低基础库: `2.7.4` */
- onSaveExitState(): ISaveExitState
- }
- interface InstanceProperties {
- /** 页面的文件路径 */
- is: string
- /** 到当前页面的路径 */
- route: string
- /** 打开当前页面路径中的参数 */
- options: Record<string, string | undefined>
- /** 上一次退出前 onSaveExitState 保存的数据 */
- exitState: any
- /** 相对于当前页面的 Router 对象 */
- router: Component.Router
- /** 相对于当前页面的 Router 对象 */
- pageRouter: Component.Router
- /** 渲染当前页面的渲染后端 */
- renderer: 'webview' | 'skyline'
- }
- type DataOption = Record<string, any>
- type CustomOption = Record<string, any>
- type InstanceMethods<D extends DataOption> = Component.InstanceMethods<D>
- interface Data<D extends DataOption> {
- /** 页面的初始数据
- *
- * `data` 是页面第一次渲染使用的**初始数据**。
- *
- * 页面加载时,`data` 将会以`JSON`字符串的形式由逻辑层传至渲染层,因此`data`中的数据必须是可以转成`JSON`的类型:字符串,数字,布尔值,对象,数组。
- *
- * 渲染层可以通过 `WXML` 对数据进行绑定。
- */
- data: D
- }
- interface ICustomShareContent {
- /** 转发标题。默认值:当前小程序名称 */
- title?: string
- /** 转发路径,必须是以 / 开头的完整路径。默认值:当前页面 path */
- path?: string
- /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4,最低基础库: `1.5.0`。默认值:使用默认截图 */
- imageUrl?: string
- }
- interface IAsyncCustomShareContent extends ICustomShareContent {
- promise: Promise<ICustomShareContent>
- }
- interface ICustomTimelineContent {
- /** 自定义标题,即朋友圈列表页上显示的标题。默认值:当前小程序名称 */
- title?: string
- /** 自定义页面路径中携带的参数,如 `path?a=1&b=2` 的 “?” 后面部分 默认值:当前页面路径携带的参数 */
- query?: string
- /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持 PNG 及 JPG。显示图片长宽比是 1:1。默认值:默认使用小程序 Logo*/
- imageUrl?: string
- }
- interface IPageScrollOption {
- /** 页面在垂直方向已滚动的距离(单位px) */
- scrollTop: number
- }
- interface IShareAppMessageOption {
- /** 转发事件来源。
- *
- * 可选值:
- * - `button`:页面内转发按钮;
- * - `menu`:右上角转发菜单。
- *
- * 最低基础库: `1.2.4`
- */
- from: 'button' | 'menu'
- /** 如果 `from` 值是 `button`,则 `target` 是触发这次转发事件的 `button`,否则为 `undefined`
- *
- * 最低基础库: `1.2.4` */
- target: any
- /** 页面中包含`<web-view>`组件时,返回当前`<web-view>`的url
- *
- * 最低基础库: `1.6.4`
- */
- webViewUrl?: string
- }
- interface ITabItemTapOption {
- /** 被点击tabItem的序号,从0开始,最低基础库: `1.9.0` */
- index: string
- /** 被点击tabItem的页面路径,最低基础库: `1.9.0` */
- pagePath: string
- /** 被点击tabItem的按钮文字,最低基础库: `1.9.0` */
- text: string
- }
- interface IResizeOption {
- size: {
- /** 变化后的窗口宽度,单位 px */
- windowWidth: number
- /** 变化后的窗口高度,单位 px */
- windowHeight: number
- }
- }
- interface IAddToFavoritesOption {
- /** 页面中包含web-view组件时,返回当前web-view的url */
- webviewUrl?: string
- }
- interface IAddToFavoritesContent {
- /** 自定义标题,默认值:页面标题或账号名称 */
- title?: string
- /** 自定义图片,显示图片长宽比为 1:1,默认值:页面截图 */
- imageUrl?: string
- /** 自定义query字段,默认值:当前页面的query */
- query?: string
- }
- interface ISaveExitState {
- /** 需要保存的数据(只能是 JSON 兼容的数据) */
- data: any
- /** 超时时刻,在这个时刻后,保存的数据保证一定被丢弃,默认为 (当前时刻 + 1 天) */
- expireTimeStamp?: number
- }
- interface GetCurrentPages {
- (): Array<Instance<IAnyObject, IAnyObject>>
- }
- }
- /**
- * 注册小程序中的一个页面。接受一个 `Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。
- */
- declare let Page: WechatMiniprogram.Page.Constructor
- /**
- * 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。
- * __注意:__
- * - __不要尝试修改页面栈,会导致路由以及页面状态错误。__
- * - 不要在 `App.onLaunch` 的时候调用 `getCurrentPages()`,此时 `page` 还没有生成。
- */
- declare let getCurrentPages: WechatMiniprogram.Page.GetCurrentPages
|