)
uni-app 组件 functional-page-navigator微信小程序功能页跳转完整指南登录 / 支付 / 地址 / 发票【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-appfunctional-page-navigator是 uni-app 中用于跳转微信小程序**功能页Functional Page**的跨平台组件目前仅微信小程序端支持。借助它开发者可以引导用户进入系统级功能页完成登录授权、发起支付、选择收货地址、获取发票等操作从而在不脱离小程序环境的前提下复用微信官方能力。读完本文你将掌握该组件的全部属性、合法取值、事件回调机制以及它与其他 uni-app 组件如 button 的open-type的配合方式可直接套用到真实业务页面中。一、什么是功能页Functional Page与 functional-page-navigator功能页是微信小程序插件体系提供的一种页面机制它允许宿主小程序通过跳转方式打开由微信或插件提供的特定功能页面例如用户信息授权页登录支付页收货地址选择页发票 / 发票抬头获取页这类页面本质上是被导航过去的功能页面因此需要一种专门的导航组件来承载跳转行为这就是functional-page-navigator的定位。它的用法与普通导航组件类似但跳转目标不是自定义页面而是系统预定义的功能页目标由name属性指定。在 uni-app 官方组件文档树中该组件收录于 docs/component/_sidebar.md与navigator、web-view等导航类组件并列属于组件 导航体系的一部分。二、兼容性目前仅微信小程序端支持根据 docs/component/functional-page-navigator.md 的兼容性矩阵| Web | 微信小程序 | Android | iOS | HarmonyOS | | :- | :- | :- | :- | :- | | x | 4.41 | x | x | x |说明微信小程序基础库 / 编译目标版本4.41起支持是当前唯一可用平台Web、Android、iOS、HarmonyOS均标记为x不支持在这些平台使用该组件不会生效因此在跨端项目中引入该组件前建议先通过条件编译如#ifdef MP-WEIXIN限定仅微信小程序端编译避免其他端出现空组件或无效果的情况。注意上表中的 4.41 指的是该组件对应的微信小程序兼容版本基线实际以运行环境的微信基础库为准。三、属性总览该组件提供 3 个核心属性与 3 个事件完整定义如下摘自原文档属性表| 名称 | 类型 | 描述 | | :- | :- | :- | |version| string | 跳转到的小程序版本线上版本必须设置为 release| |name| string | 要跳转到的功能页 | |args| object | 功能页参数参数格式与具体功能页相关 | |success| eventhandler | 功能页返回且操作成功时触发detail 格式与具体功能页相关 | |fail| eventhandler | 功能页返回且操作失败时触发detail 格式与具体功能页相关 | |cancel| eventhandler | 因用户操作从功能页返回时触发 |整体使用形态如下属性取值为示意完整合法值见下文functional-page-navigator versionrelease namechooseAddress :args{ ... } successonSuccess failonFail cancelonCancel !-- 放在组件内部的内容即跳转触发器通常为按钮或文本 -- button typeprimary选择收货地址/button /functional-page-navigator四、version跳转到哪个版本的功能页version用于指定跳转到功能页所在的小程序版本合法值如下| 合法值 | 描述 | | :- | :- | |develop| 开发版 | |trial| 体验版 | |release| 正式版 |关键约束原文档明确强调线上版本必须设置为release。在开发调试阶段可以临时使用develop或trial配合对应的环境进行联调发布上线时若仍使用develop/trial功能页将无法在正式环境下正常工作因此务必在提交前将version改为release或直接固定写为release并在开发期通过配置切换。functional-page-navigator versionrelease nameloginAndGetUserInfo successonLoginSuccess button微信登录/button /functional-page-navigator五、name五种功能页与各自参数name决定跳转到哪种功能页当前支持的合法值共 5 种覆盖登录、支付、地址、发票四大高频场景| 合法值 | 描述 | | :- | :- | |loginAndGetUserInfo| 用户信息功能页登录并获取用户信息 | |requestPayment| 支付功能页 | |chooseAddress| 收货地址功能页 | |chooseInvoice| 获取发票功能页 | |chooseInvoiceTitle| 获取发票抬头功能页 |每个功能页的args参数格式与success/fail回调的detail格式均与具体功能页相关不存在统一结构。下面给出各场景的典型用法。5.1 用户信息功能页loginAndGetUserInfo用于登录并获取用户信息场景success回调中返回用户信息functional-page-navigator versionrelease nameloginAndGetUserInfo successonUserInfo failonFail cancelonCancel button typeprimary sizemini微信登录/button /functional-page-navigatorfunction onUserInfo(e) { // detail 格式与用户信息功能页相关通常包含用户昵称、头像等授权结果 console.log(登录成功, e.detail) }5.2 支付功能页requestPayment用于拉起支付收银台args中需传入与支付功能页约定格式一致的参数functional-page-navigator versionrelease namerequestPayment :argspaymentArgs successonPaySuccess failonPayFail button typewarn去支付/button /functional-page-navigatorimport { ref } from vue const paymentArgs ref({ // 参数格式与支付功能页相关需按对应功能页约定传入订单等信息 })提示args的具体字段需依据对应功能页的约定构造不同功能页对参数结构的要求不同实际开发时应以对应功能页文档为准。5.3 收货地址功能页chooseAddress用于让用户选择收货地址success的detail中携带用户选中的地址信息functional-page-navigator versionrelease namechooseAddress successonAddress cancelonCancel button typedefault选择收货地址/button /functional-page-navigatorfunction onAddress(e) { // detail 格式与收货地址功能页相关通常包含收货人、手机号、详细地址等 const addr e.detail console.log(已选择地址, addr) }5.4 发票与发票抬头功能页chooseInvoice / chooseInvoiceTitle分别用于获取发票和获取发票抬头functional-page-navigator versionrelease namechooseInvoiceTitle successonInvoiceTitle cancelonCancel button typedefault选择发票抬头/button /functional-page-navigator六、事件回调success / fail / cancel功能页是一种跳出当前页面再返回的交互因此结果通过三个事件回传| 事件 | 触发时机 | | :- | :- | |success| 功能页返回且操作成功时触发detail格式与具体功能页相关 | |fail| 功能页返回且操作失败时触发detail格式与具体功能页相关 | |cancel| 因用户操作主动取消 / 返回从功能页返回时触发 |使用要点三者是并列的互斥分支一次跳转最终只会命中其中一种因此建议三个事件都绑定覆盖成功、失败、取消三种结局避免出现操作无反馈success与fail的detail结构因功能页而异不能假设统一字段cancel主要面向用户主动放弃的场景如未选地址直接返回此时通常不需要做业务处理但应保证页面状态不被破坏。七、与 button 组件 open-type 的关系仓库佐证在 uni-app 组件体系中功能页能力并非functional-page-navigator独占docs/component/button.md 中button的open-type也提供了一组重叠的能力例如getUserInfo获取用户信息可从getuserinfo回调中获取用户信息chooseAddress选择用户收货地址可从chooseaddress回调获取地址信息chooseInvoiceTitle选择用户发票抬头可从chooseinvoicetitle回调获取抬头信息。二者的差异在于button open-type将功能页能力内聚到按钮上通过按钮回调拿到结果写法更紧凑适合点一下按钮就完成授权 / 选择的场景functional-page-navigator是独立的导航组件内部可承载任意内容按钮、文本、图标等且支持args传参与success / fail / cancel三分支回调适合需要更精细控制跳转结果、或跳转目标不仅是地址 / 发票等轻量场景如支付、登录的场合。开发者可根据交互复杂度在两者之间选择当需要requestPayment支付或loginAndGetUserInfo登录这类更完整的功能页流程时functional-page-navigator是文档中明确列出的承载方式。八、使用注意事项汇总平台限定仅微信小程序端兼容基线 4.41可用其他端均为x建议配合条件编译使用version上线必改release是线上唯一合法配置develop/trial仅用于开发联调args与detail无统一格式均以具体功能页的约定为准不要假设字段结构三个事件都要监听成功、失败、取消需分别处理保证交互闭环触发内容自定组件内部可放置任意可点击内容推荐button点击后触发跳转。九、仓库参考资源组件文档docs/component/functional-page-navigator.md属性、合法值、兼容性的权威出处组件目录docs/component/_sidebar.md该组件在 uni-app 组件体系中的位置相关组件docs/component/button.mdopen-type中的getUserInfo、chooseAddress、chooseInvoiceTitle等重叠能力功能页能力在示例工程中的业务化应用可参考 examples/hello-uts 与 examples/hello-uvue 中涉及登录、支付、地址等模块的页面实现。结合上述属性、合法值与回调机制你即可在微信小程序端安全地接入登录、支付、地址与发票等系统功能页并通过version与三事件回调完成环境切换与结果处理。【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-app创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考