vue3路由代码示例

路由简单分三步吧

第一定义路由: 包括访问地址,对应组件

第二使用:在index.html中使用它

下面是代码示例:

components/Person.vue

<template>
	<router-link to="/test/hello">跳转</router-link><!-- 跳转子路由 -->
	<router-view/>
	<div class="ttt">
<!-- 		<button @click="consoleName">测试一下</button>-->
		<h2>{{age}}</h2>
		<button @click="addAge">年龄+1</button>
		<h2>{{age2}}</h2> 
<!-- 		<li v-for="data in reactive2" :key="data.name">{{data.name}}</li>
		<h2>{{reactive3.name}}</h2>
		<h2>{{reactive4.a.b.c.d}}</h2> -->
		<button @click="updateReactive2">更新数据</button>
<!-- 		<h2>{{objectRef.two}}</h2> -->
<!-- 		<h2>{{score}}</h2>
		<h2>{{name}}</h2>
		<h2>{{refObj}}</h2>
		<h2>toRefid:{{toRefId}}</h2> -->
		<h2>{{fullName}}</h2>
		<h2>{{name3}}</h2>
		<h2>refObj:{{refObj}}</h2>
		<h2>reactive3:{{reactive3}}</h2>
		<button @click="test">测试一下</button>
		<h2>{{reactive5}}</h2>
		<h2>汽车:{{ person.car.c1 }}、{{ person.car.c2 }}</h2>
		<button @click="changeCar">修改整个车</button>
	</div>
</template>

<script setup lang="ts" name="testName">
	import {ref} from 'vue'
	import {reactive} from 'vue'
	import {toRefs} from 'vue'
	import {toRef} from 'vue'
	import {computed} from 'vue'
	import {watch} from 'vue'
	
	let age2 = 1
	
	const obj = {
		one:Number,
		two:Number
	}
	
	let objectRef = ref<obj>({
		one:1,
		two:2
	})
	
	let reactive4 = reactive({a:{b:{c:{d:233}}}})
	
	let reactive3 = reactive({id:1,name:'13123132测试数据'})
	
	let reactive2 = reactive([
	{
		name:'测试1'
	},
	{
		name:'测试2'
	},
	])
	
	let student = reactive({id:1,score:25,name:'数学'})
	
	let {score,name} = toRefs(student);
	let toRefId = toRef(student,'id');
	
	let refObj = ref([
		{id:1,name:'ref对象'},
		{id:2,name:'测试咯'}
	])
	
	function updateReactive2(){
		reactive2[0].name = "更新数据"
		reactive4.a.b.c.d = 6666
		objectRef.value.two = 6
		score.value = 99
		// refObj.value[1].name = '更新的数据'
		refObj.value = {id:3,name:'测试一下'}
		reactive3.name= "reactive3更新数据"
		toRefId.value = 2 +1
		fullName.value = "啦啦啦啦啦"
	}
	
	
	
	
	
	
	  // 数据
	  let person = reactive({
	    name:'张三',
	    age:18,
	    car:{
	      c1:'奔驰',
	      c2:'宝马'
	    }
	  })
	
	  function changeCar(){
	    person.car = {c1:'雅迪',c2:'爱玛'}
	  }
	
	  // 监视,情况五:监视上述的多个数据
	  watch([()=>person.name,()=>person.car],(newValue,oldValue)=>{
		  debugger
	    console.log('person.car变化了',newValue,oldValue)
	  },{deep:true})
	
	
	
	
	let reactive5 = reactive({
		id:1,
		name:{
			xing:'wang',
			ming:'sansan'
		}
	})
	
	function test(){
		reactive5.name = {xing:'2',ming:'测试'}
	}
	
	const reactiveWatch = watch(reactive3,(newValue,oldValue)=>{
		console.log("reactive对象值变化",newValue,oldValue)
	})
	
	watch([()=>reactive5.id,reactive5.name],(newValue,oldValue)=>{
		console.log("reactive5对象多属性变化",newValue,oldValue)
	},{deep:true})
	
	watch(refObj,(newValue,oldValue)=>{
		console.log("ref对象变化",newValue,oldValue)
	},{deep:true})
	
	watch(reactive3,(newValue,oldValue)=>{
		console.log("reactive对象变化",newValue,oldValue)
	})
	
	let age = ref(1)
	function addAge(){
		age.value = age.value + 1 
		age2 += 1
		refObj.value.name= 6666
	}
	
	const swatch = watch(age,(newValue,oldValue)=>{
		console.log("ref变量值变化"+newValue+oldValue)
		if(newValue>5){
			swatch()
		}
	})

	
	let name3 = ref('李莉莉')
	let fullName = computed({
		get(){
			return name3
		},
		set(value){
			console.log("赋值方法")
			name3.value = value
		}
	})

</script>

<style>
	.ttt{
		color:red
	}
</style>

router/index.js:定义路由地址和映射组件

import testName from '../components/Person.vue'
import HelloWorld from '../components/HelloWorld.vue'

import {createRouter,createWebHistory} from 'vue-router'

const router = createRouter({
	history:createWebHistory(),
	routes:[
		{
			path:'/test',
			component:testName//在这个路由界面上补上router-link,以及routerView就可以跳转子路由
			children:[
				{
					path:'/test/hello',//子路由:路径要完整
					component:HelloWorld
				}
			]
		}
	]
})

export default router

main.ts:把组件绑定到标签id上

// 映入createApp用于创建应用
import { createApp } from "vue"


// 引入App根组件
import App from './App.vue'
// 引入路由器
import router from './router'


// 创建根组件应用
const app = createApp(App);
// 使用路由器
app.use(router)
// 将整个应用挂在到id为app的容器上
app.mount('#app')

App.vue:使用路由要注意,routerlink和router-view是必须有的,后者是组件显示位置

<script setup>
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup
// import VueTwo from './components/vue2.vue'
import Person from './components/Person.vue'
import HelloWorld from './components/HelloWorld.vue'

</script>

<template>
<!-- 	<VueTwo/> -->
<!-- 	<Person/>-->
<!--  <img alt="Vue logo" src="./assets/logo.png" /> -->
<!-- <HelloWorld msg="Hello Vue 3 + Vite" /> -->
<router-link to="/test">测试</router-link>
<router-view/>
</template>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

页面效果图:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/491786.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ学习笔记:分布式事务

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、分布式事务的难题2、解决方式2.1、半事务消息和事务回查2.2、代码样例2.2.1、TransactionListener2.2.2、TransactionMQProducer2.2.3、MessageListenerConcurrently2.2.4、流程图 1、分布…

浅谈双亲委派模型

本文浅析了双亲委派的基本概念、实现原理、和自定义类加载器的正确姿势。 对于更细致的加载loading过程、初始化initialization顺序等问题&#xff0c;文中暂不涉及&#xff0c;后面整理笔记时有相应的文章。 JDK版本&#xff1a;oracle java 1.8.0_102 基本概念 定义 双亲委…

智慧城市解决方案大全:标准规范顶层设计指南、整体解决方案、厂商售前宣讲PPT、招投标、智慧城市白皮书等全套680份,一次性打包下载

关键词&#xff1a;智慧城市&#xff0c;智慧城市解决方案&#xff0c;智慧城市发展的前景与趋势&#xff0c;智慧城市概念主力流出&#xff0c;智慧城市项目包括哪些方面&#xff0c;智慧城市项目方案&#xff0c;智慧城市宣传片&#xff0c;智慧城市白皮书&#xff0c;智慧城…

Linux如何将桌面版转为mini版-解决中文字体变为英文字体

中文字体转为英文字体 我们进入Rocky-Linux后&#xff0c;ls或者打开文件夹发现有中文 我们执行命令 sudo localedef -i en_US -f UTF-8 en_US.UTF-8将其转为英文&#xff0c;并且重启机器 此时中文转化为英文 桌面版linux转为MINN版 1. 我们可以卸载桌面版 sudo dnf gr…

c++ 跳转搜索(Jump Search)

与二分搜索一样&#xff0c;跳转搜索是一种针对排序数组的搜索算法。基本思想是通过按固定步骤向前跳跃或跳过某些元素来代替搜索所有元素来检查更少的元素&#xff08;比线性搜索&#xff09;。例如&#xff0c;假设我们有一个大小为 n 的数组 arr[] 和一个大小为 m 的块&…

PEReDi 完全隐私的央行数字货币方案

第一个对完全隐私保护建模的方案&#xff0c;基于账户模型&#xff0c;要求交易双方都在线。 角色分类 中央银行 B B B&#xff1a;负责发行数字货币和货币政策&#xff0c;但不控制用户账户的状态&#xff0c;没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…

数据结构-队列-005

1链式队列 运行结果如下&#xff1a; 1.1链式队列结点定义 /*自定义一个数据类型*/ typedef struct student {char name[32];char sex;int age; }DATA_TYPE;/*定义一个链式队列结点*/ typedef struct link_queue_node {DATA_TYPE data;//数据域struct link_queue_node *pne…

SpringBoot和SpringCloud面试题

1、SpringBoot 1.1 和Spring对比 1.2 SpringBoot自动装配 springboot的自动装配实际上就是为了从spring.factories文件中获取到对应的需要进行自动装配的类&#xff0c;并生成相应的Bean对象&#xff0c;然后将它们交给spring容器来帮我们进行管理 原理 SpringBootApplicatio…

BUUCTF-Misc13

[ACTF新生赛2020]outguess1 1.打开附件 2.outguess outguess -k "abc" -r mmm.jpg flag.txt “-k “abc”” 表示使用密码 “abc” 进行解密&#xff1b; “-r” 表示提取信息的操作&#xff1b; “mmm.jpg” 是包含隐藏信息的源图像文件&#xff1b; “flag.txt” …

共用体详解

1 共用体的概念 有时需要使几种不同类型的变量存放到同一段内存单元中。例如,可把一个整型变量、一个字符型变量、一个实型变量放在同一个地址开始的内存单元中(见图11.24)。以上3个变量在内存中占的字节数不同,但都从同一地址开始(图中设地址为1000)存放。也就是使用覆盖技术…

“数据持久化”和“缓存与数据库不一致”到底有什么区别?

之前&#xff0c;我一直把“数据持久化”和“缓存与数据库不一致问题”给搞混了。我当时复习的时候基本上就没有思考&#xff0c;就是纯背诵&#xff0c;数据持久化是什么&#xff0c;数据持久化有两种方式&#xff0c;这两种方式特点是什么&#xff0c;然后巴拉巴拉一堆。缓存…

LC 100.相同的树

100. 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a; p [1,2,3], q [1,2,3] 输出&#xff1…

【pytest、playwright】构建POM项目,以及解决登录问题,allure环境问题

目录 前言 1、文件目录 2、安装依赖 3、POM项目实战-案例&#xff1a;打开指定页面 目录结构&#xff1a; pages中的代码&#xff1a; cases中的代码&#xff1a; 4、解决登录问题 问题&#xff1a; 解决方案&#xff1a; 获取登录的用户信息&#xff08;cookie&a…

GTC 2024 火线评论:DPU 重构文件存储访问

编者按&#xff1a;英伟达2024 GTC 大会上周在美国加州召开&#xff0c;星辰天合 CTO 王豪迈在大会现场参与了 GPU 与存储相关的最新技术讨论&#xff0c;继上一篇《GTC 2024 火线评论&#xff1a;GPU 的高效存储利用》之后&#xff0c;这是他发回的第二篇评论文章。 上一篇文章…

数据意外变化导致条件判断流程异常

1. 问题描述 用户使用的 MCU 型号是 STM32H750VB。 在客户的代码中有多个条件语句&#xff0c;在条件里面的变量数值没有变化的情况下执行了条件里面的逻辑。 有点类似如下 C 语句 : If(变量 A !0) {//执行一些指令 }即变量 A 在明明没有变化且条件不满足的情况下, 程序运行时…

程序员卷王的简历

这真是一份淋漓尽致、低入尘埃、舔到骨髓的优势。 但从一个hr的角度来看&#xff0c;依然有可以继续提升的地方。 比如&#xff1a; 优势第一条本身就有问题&#xff0c;不懂劳动法&#xff1f;你怎么还会有劳动法这个概念&#xff01;你知道“劳动法”本身&#xff0c;这个…

自动采集实时海量主流电商平台API数据接口,让你拥有一手绝对好牌!

前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。 平时需要从某些电商网站上抓取数据&#xff0c;那么这里以淘宝为示例给大家演示。这…

selenium元素定位--xpath定位--层级与逻辑组合定位

其他元素非唯一时&#xff0c;又不想用xpath绝对定位时&#xff0c;需要用到层级与逻辑定位. 一、层级属性结合定位&#xff1a; 遇到元素没有class、name、id等或属性动态变化情况时&#xff0c;可以找父节点元素&#xff0c;父级节点没有id时&#xff0c;可以继续往上找id&…

HeidiSQL导出SQL文件

目前开发阶段的数据库可视化工具逐渐转为了HeidiSQL&#xff0c;本文讲一讲导出到sql文件的小细节&#xff0c;给自己做个记录补充。 安装或数据库可视化工具比较可参考&#xff1a; windows下全免费手动搭建php8mysql8开发环境及可视化工具安装 导出 原来用Navicat的时候&am…

git下载安装教程

git下载地址 有一个镜像的网站可以提供下载&#xff1a; https://registry.npmmirror.com/binary.html?pathgit-for-windows/图太多不截了哈哈&#xff0c;一直next即可。