Navigation Service — Basic Navigation & PageReference

DEX475 - Lightning App Builder

📄 第 364 页 🎬 视频课程

课程章节介绍

同学们,我们这节课来讲一讲 Lightning Web Components 里的导航服务,也就是如何让用户在应用中跳转到不同的页面。先记住核心概念:导航服务用 PageReference 对象来描述你要去的目的地,就像你在地图上输入一个地址一样。 要使用导航功能,第一步你得在组件里导入 NavigationMixin,然后把它混入你的组件类。这就像是安装一个导航工具包,让你的组件获得导航的能力。之后你就可以调用两个主要方法了:一个是 navigate,用来实际跳转;另一个是 generateUrl,用来生成跳转链接的 URL,而不是直接跳转。 navigate 方法接受两个参数,第一个是 pageReference,就是你要去哪儿;第二个参数叫 replace,是个布尔值,用来控制浏览器的历史记录。如果把 replace 设为 true,那么当前这个页面记录就会被替换掉,用户点后退按钮时会跳过中间的页面,不会返回到原来的地方。如果设为 false 或者不填,那就会保留历史,后退能回到上一页。 generateUrl 方法只接受一个 pageReference,它会返回一个 Promise,最终给你一个 URL 字符串。这个特别有用,因为你可以把这个 URL 当作普通链接的 href 值,这样用户就能右键打开新标签页,或者按住 Ctrl 点击打开新窗口,体验和标准的网页链接完全一样。 接下来说 PageReference 的类型,它覆盖了几乎所有的导航场景。第一种是 objectPage,用来导航到标准对象的列表页、主页或者新建记录页。比如你可以跳转到客户的列表,或者创建新客户。第二种是 recordPage,用来查看或编辑某条具体记录。第三种是 navItemPage,指向你在设置里定义的自定义选项卡。第四种是 webPage,可以跳转到任意的外部网址。第五种是 namedPage,用于一些特殊页面,比如 filePreview,文件预览页面。最后一种是 component,专门给那些通过 URL 就能直接访问的 Lightning 组件使用。 有一点要特别注意,导航服务在 Visualforce 容器里或者 Lightning Out 的环境下是不支持的,如果你在这些场景下用,导航可能不会生效。 好,我们简单总结一下:用 NavigationMixin 获得导航能力,用 PageReference 描述目标,用 navigate 跳转并可通过 replace 控制历史,用 generateUrl 生成链接以支持右键新标签,PageReference 有六种类型覆盖各种场景,并且注意不支持 Visualforce 和 Lightning Out。这样你就能轻松实现各种页面流转了。下节课我们会通过具体的代码示例来加深理解。

关键词

LWC Lightning Web Components Salesforce