首页 > 其他分享 >Blazor和Vue对比学习(进阶.路由导航三):代码导航

Blazor和Vue对比学习(进阶.路由导航三):代码导航

时间:2022-12-10 18:02:26浏览次数:91  
标签:Vue 进阶 代码 detail router 导航 panda

导航除了使用组件外(Blazor使用NavLink,Vue使用router-link或RouterLink),更多的时候,主要还是使用代码进行导航,更加灵活。Blazor提供了 NavigationManager对象,可以在代码层进行导航操作;而Vue提供了router和route对象。router对象为路由器,可用于导航;route对象为路由信息,可以获取参数等信息。

 

一、Blazor的代码导航,改造上一章节的Animal.razor页面,使用代码导航

@page "/animal"
@layout MainLayout
@inherits LayoutComponentBase
<!--依赖注入NavigationManager对象,NavigationManager由框架自动注册-->
@inject NavigationManager Navigation

<PageTitle>动物</PageTitle>
<h3>这里是动物页Animal.razor</h3>
<!--按钮调用导航方法-->
<button @onclick="NavigateToPandaDetail">熊猫详情</button>
<button @onclick="NavigateToDogDetail">狗狗详情</button>
<main>
    @Body
</main>


@code {
    <!--调用Navigation对象的NavigateTo方法,导航到animal/panda-detail-->
    private void NavigateToPandaDetail()
    {
        Navigation.NavigateTo("animal/panda-detail");
    }
    <!--调用Navigation对象的NavigateTo方法,导航到animal/dog-detail-->
    private void NavigateToDogDetail()
    {
        Navigation.NavigateTo("animal/dog-detail");
    }
}

 

 

二、Vue导航,改造上一节的Animal.vue组件

<script setup>
//引入router对象
import { useRouter } from 'vue-router';
const router = useRouter();

//字符串式导航
function LinkToPandaDetial(){
    router.push("/panda-detail");
}
//对象式导航且使用命名路由
function LinkToDogDetial(){
    router.push({
        name:"dog-detail"
    });
}
/*对象式导航也可以使用路径,并传递参数
function LinkToPandaDetial(){
    router.push({
        path:"/dog-detail",
        params: { username: 'eduardo' } 
    });
}
*/
</script>

<template>
  <h2>这里是关于动物页Animal.vue</h2>
  <header>
    <!-- 按钮调用导航方法 -->
    <button @click="LinkToPandaDetial">熊猫详情</button>
    <button @click="LinkToDogDetial">狗狗详情</button>
  </header>
  <main>
    <router-view></router-view>
  </main>
</template>

 

 

三、浏览器history对象上储存着浏览历史,以上两例的默认导航方式,都会将浏览记录添加到history对象上,如果不想留下记录,可以使用replace

//Vue中使用replace=================================================================
//组件导航
<router-link to="/panda-detail" replace></router-link>
//代码导航
router.replace("/panda-detail");

//Blazer中使用replace==============================================================
//代码导航①
Navigation.NavigateTo("animal/panda-detail",replace:true);
//代码导航②,使用NavigationOptions配置对象
Navigation.NavigateTo("animal/panda-detail", new NavigationOptions
{
    ForceLoad = true, //绕过浏览器路由,强制从服务器上加载新页面
    ReplaceHistoryEntry = true, //不保留导航历史记录
    //HistoryEntryState设置历史记录的键名
    //HistoryEntryState = "导航到panda-detail"
});

 

标签:Vue,进阶,代码,detail,router,导航,panda
From: https://www.cnblogs.com/functionMC/p/16950103.html

相关文章

  • 02 安装vue-router的过程中报错
    错误截图:使用两种加载vue-router的方法 解决办法:输入:npminstall--legacy-peer-depsvue-router--save-dev 至于原因吗,暂时不知道,以后遇到这种vue-router加载不......
  • [Vue3-14]父子组件数据传递
    1.父组件传递子组件2.子组件传递父组件......
  • 01 Vue创建项目并运行
    根据vue-cli中文官网进行操作第一步:以管理员身份运行cmd,并查看vue-cli的版本 第二步:创建文件夹,目录移动到创建的文件夹中创建的文件夹cmd中的目录指定到上面的文件......
  • Blazor和Vue对比学习(进阶.路由导航二):布局(母版/嵌套)
    单文件组件框架中,当更改请求地址时,并不会引发页面跳转,而是由框架捕获请求地址(在框架中我们称之为路由),然后根据路由与组件的映射关系,在页面的指定位置切换和显示组件。在哪......
  • Vue学习笔记2--类样式绑定和内置指令v-xxx
    Class和Style绑定class绑定放置对象(常用):class="{类名:布尔}"<!--第一种放置字符串--><pclass="active">hello</p><!--第二种放置对象--><!--......
  • 【Swift底层进阶--018:高阶函数】
    ​​Swift​​​是一门面向协议的语言,开发中我们已经充分享受到面向协议编程的便利,但​​Swift​​​相比​​OC​​还有一个更重要的优势,那就是对函数式编程提供了强大的支......
  • Vue Vue-Router params 传参 为空 path定义参数 参数 param is not repeatable
    我在Vue-Router4.0.3版本上出现这个问题因为官方在2022年8月22日时废除了未定义的传参方式,所以必须使用定义的params。解决办法:在配置路由时:path路径上带上传值的key值......
  • Vue2(笔记30) - 脚手架 - 插件
    插件Vue的插件功能可以整合之前所有的全局配置,也支持传参,使用起来比较强大;Vue 的插件,本质上是一个 对象;要求这个对象中,必须包含install() 方法;第一步:定义一个插件文件;pu......
  • vue2 基础
    一、什么是vue构建用户界面用vue网html页面中填充数据。框架框架是一套现场的解决方案,程序员必须遵守框架的语法,去编写业务代码。学习vue,即学习vue框架......
  • Vue2(笔记29) - 脚手架 - mixin混入
    mixin混入所谓混入,就是几个组件共享一个配置,可局部混入,也可全局混入;第一步:先建个混入文件,配置写进去,再export 出来;新建mixin.js 文件: exportconstcommonConfig={......