035、Vue3+TypeScript基础,路由params参数时,使用defineProps自动获得数据

news/2024/9/18 3:41:58/文章来源:https://www.cnblogs.com/tianpan2019/p/18368505

01、New.vue代码如下:

<template><div class="app-container"><!-- 导航区域容器 --><div class="sidebar"><ul class="news-list"><!--第一种写法--><li v-for="news in newsList" :key="news.id"><router-link to="/news/detail/哈哈/你好/嘿嘿">{{ news.title }}</router-link></li><!--第二种写法--><li v-for="news in newsList" :key="news.id"><router-link:to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{ news.title }}</router-link></li><!--第三种写法--><li v-for="news in newsList" :key="news.id"><router-link :to="{name: 'neirong',params: {id: news.id,title: news.title,// 就算路由不写这个参数,也可以正常跳转,因为路由带个问号// content: news.content}}">{{ news.title }}</router-link></li></ul></div><!-- 内容区域容器 --><div class="main-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="news">
import {reactive} from "vue";
import {RouterLink, RouterView} from "vue-router";const newsList = reactive([{id: 1, title: '新闻1', content: '内容1'},{id: 2, title: '新闻2', content: '内容2'},{id: 3, title: '新闻3', content: '内容3'},
])
</script><style scoped>
.app-container {display: flex; /* 使用Flexbox布局 */
}.sidebar {width: 150px; /* 导航栏宽度 */padding: 20px;box-sizing: border-box; /* 防止padding影响元素总宽度 */
}.news-list {list-style-type: none;padding: 0;
}.news-list li {margin-bottom: 10px; /*每一条间距*/
}.main-content {flex-grow: 1; /* 内容区域占据剩余空间 */padding: 20px;overflow-y: auto; /* 如果内容过多,允许垂直滚动 */
}
</style>

02、index.ts代码如下:

//创建路由并暴露出去
import {createRouter, createWebHistory} from 'vue-router'
import Home from '@/view/Home.vue'
import About from '@/view/About.vue'
import News from '@/view/News.vue'
import Detail from '@/view/Detail.vue'const router = createRouter({history: createWebHistory(),routes: [{name: 'zhuye', path: '/home', component: Home},{name: 'guanyu', path: '/about', component: About},{name: 'xinwen', path: '/news', component: News,//子类的path不需要加斜杠
            children: [{// 一定要使用namename: 'neirong',// 增加带有参数的路由,加个问号是可传可不传没有就不显示path: 'detail/:id/:title/:content?',component: Detail,// 第一种写法:props: true,},]},]
})export default router

03、Detail.vue代码如下:

<template><ul class="news-list"><li>编号:{{ id }}</li><li>编号:{{ title }}</li><li>编号:{{ content }}</li></ul>
</template><script setup lang="ts" name="home">
// import {useRoute} from 'vue-router'
//
// const route = useRoute()
// console.log(route)
defineProps(['id', 'title', 'content'])
</script><style scoped>
.news-list {/* 添加边框样式 */border: 2px solid #000; /* 边框宽度、样式和颜色 */border-radius: 5px; /* 可选:添加边框圆角 */padding: 20px; /* 可选:给内部内容添加一些内边距 */margin: 20px; /* 可选:给元素添加一些外边距,以便与其他元素隔开 */
}
</style>

04、文档结构如下:

 05、浏览器显示如下,正常不报错:

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3---基础

vue3基础: vue2里面做一个基础的数据渲染:在VUE3里面,可以直接声明在 setup 函数里面: 此时会发现仅仅是单向数据绑定,使用ref进行双向数据绑定:还可以进行简化:同样可以写一个点击事件:打完收工!

【待看】EDR联动数据包封锁技术

一、摘要 利用中间人攻击(PitM)和过滤EDR特定通讯数据包, 可以干扰和阻止EDR与云服务器的通讯过程, 从而有效隐藏报警信息, 使其不被SOC团队察觉。这种效果可以通过对目标主机实行ARP欺骗并配置iptables来实现。这种方法的优势在于不需要管理员权限或对受害主机的访问, 但需要一…

034、Vue3+TypeScript基础,路由params参数的使用

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue//引入路由 import router from ./routerconst app = createApp(App); //使用路由 app.use(router); // App.vue的根元素id为app app.mount…

RocketMQ 的convertAndSend方法和syncSend方法区别

RocketMQ的convertAndSend方法和syncSend方法是两种不同的消息发送 convertAndSend方法是将消息内容转换为指定的格式,然后发送到指定的消息队列。这个方法是异步发送的,也就是说,发送消息后就立即返回并不等待对方的响应。 syncSend方法则是同步发送消息,也就是说发送消息…

CSDN取消关注博主才可阅读全文限制

安装这个脚本可以跳过关注 脚本地址作者:翎野君 出处:http://www.cnblogs.com/lingyejun/ 若本文如对您有帮助,不妨点击一下右下角的【推荐】。如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。转载文章请务必保留出处和署名,否则保留追究法…

c语言中%f输出double型和float型值

001、[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c #include <stdio.h>int main(void) {double i; //声明double型 和 float型变量float j;i = 3.14;j = 3.14;printf("i = %f\n", i);printf("j = %f\n", j);return 0; } […

unbuntu更新Python3版本到最新,安装依赖手动编译

安装依赖sudo apt update sudo apt install build-essential zlib1g-dev libffi-dev libssl-dev下载安装包,手动配置编译 官网查找对应linux版本tgz包wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz tar -xzvf Python-3.11.0.tgz cd Python-3.11.0配置编译…

MISC-666

MISC-666 前言 很简单的一道题,主要是涉及hex转图片,文件头 PNG 文件头: 89 50 4E 47 0D 0A 1A 0A 文件尾: AE 42 60 82 题目 666.zip解压获得6个txt文件,内容分别如下 #1 89504e470d0a1a0a0000000d494844520000012c0000012c0806000000797d8e75000000017352474200aece1ce9…

ollama搭建本地ai大模型并应用调用

1、下载ollama 1)https://ollama.com 进入网址,点击download下载2)下载后直接安装即可。 2、启动配置模型 默认是启动cmd窗口直接输入1 ollama run llama3启动llama3大模型 或者启动千问大模型1 ollama run qwen2启动输入你需要输入的问题即可 3、配置UI界面 安装docker并部…

Fluent Editor:一个基于 Quill 2.0 的富文本编辑器,功能强大、开箱即用!

你好,我是Kagol,个人公众号:前端开源星球。带大家一起使用下 Fluent Editor,使用起来基本上和 Quill 没什么区别,只需要重点关注下增强的部分,比如表格、附件、@提醒、表情等模块。你好,我是 Kagol,个人公众号:前端开源星球。 今年4月份,听到 Quill 2.0 正式发布的消…

二进制下载部署Nginx

一、通过Nginx官网并采取二进制方式部署 Nginx官网 二、具体步骤[root@web01 yum.repos.d]# ll -d nginx.repo -rw-r--r--. 1 root root 398 Aug 17 22:01 nginx.repo [root@web01 yum.repos.d]# pwd /etc/yum.repos.d接下来可以直接使用 yum -y install nginx 则是直接从官方下…

c语言中%f和%lf读入浮点型数据

001、a、%lf、和 %f读入double型值[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 测试程序 #include <stdio.h>int main(void) {double i, j; // 声明两个double型变量printf("i: "); scanf("%lf", &…