当前位置: 首页 > news >正文

Blazor-全局路由跳转事件

OnNavigateAsync获取或设置导航到新页面之前应调用的处理程序,是发生在导航到目标 URL 之前触发的事件。
(1)在浏览器的地址栏中手动输入访问页面的 URL 会触发
(2) 在应用中单击链接会触发,会触发。
(3) 使用NavigationManager.NavigateTo()方法以代码的方式访问页面会触发

事件触发测试

在Router.razor文件中使用OnNavigateAsync事件

@inject NavigationManager navigationManager

<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }"
OnNavigateAsync="Callback">
    <Found Context="routeData">
        <RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>
</Router>

@code {
    private async Task Callback(NavigationContext obj)
    {
        Console.WriteLine(obj.Path);
        await Task.CompletedTask;
    }
}

链接跳转测试

在这里插入图片描述

可以正确输出,触发事件成功

代码跳转

@page "/demoPage"
@rendermode InteractiveAuto
@inject NavigationManager Navigation

<h3>DemoPage</h3>
<button @onclick="NavigateTo">代码跳转</button>

@code {
    private void NavigateTo()
    {
        Navigation.NavigateTo("/counter");
    }
}

在这里插入图片描述

点击代码跳转按钮后,控制台正常输出,触发事件成功

地址栏输入链接跳转

在这里插入图片描述

我们在地址栏输入了/demoPage进行页面跳转,触发事件成功

拦截地址重定向

@inject NavigationManager navigationManager

<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }"
OnNavigateAsync="Callback">
    <Found Context="routeData">
        <RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
        <FocusOnNavigate RouteData="routeData" Selector="h1" />
    </Found>
</Router>

@code {
    private async Task Callback(NavigationContext obj)
    {
        if (obj.Path == "counter"){
            navigationManager.NavigateTo("/weather");
        }
        Console.WriteLine(obj.Path);
        await Task.CompletedTask;
    }
}

我们做一个拦截跳转的测试,当访问counter页面时我们进行重定向,跳转至weather组件
在这里插入图片描述

我们可以看到预期和我们预想的是一致的,完成了重定向

相关文章:

  • 污酸提铼系统提升改造工艺
  • k8s面试题总结(十)
  • TDengine SQL查询语法
  • 基于Spring Boot + Vue的图书个性化推荐系统(LW+PPT)
  • flask实现mvc模式
  • JVM内存结构和各种结构的作用
  • 蓝桥备赛(11)- 数据结构、算法与STL
  • VMware虚拟机中CentOS8系统账户,忘记密码怎么找回
  • [内网安全] Windows 域认证 — Kerberos 协议认证
  • Objective-C 中 @synthesize VS @dynamic
  • 每日一题——缺失的第一个正数
  • Taro React组件开发 —— RuiNoticeBar 通知栏
  • K8S高可用集群-小白学习之二进制部署(ansible+shell)
  • T31ZC 君正SOC芯片 应用于智能家居、工业控制等 满足各种嵌入式应用的需求 提供样品测试+软硬件资料
  • docker-compose安装redis-主从+哨兵(3台虚拟机一主两从)
  • 深度学习模型组件-RevNorm-可逆归一化(Reversible Normalization)
  • 行为模式---迭代器模式
  • MySQL 主主复制与 Redis 环境安装部署
  • 开发模型与测试模型
  • 原码、反码和补码的介绍和区别
  • 网站中怎么做下载链接/企业文化培训
  • 网站大数据怎么做/广州seo做得比较好的公司
  • 毕业设计做网站想法/东莞网站推广技巧
  • 上海最专业的网站建设公司/seo3的空间构型
  • 域名注册查询网站/综合性b2b电子商务平台网站
  • 滨州做网站的电话/5188关键词平台