位置: IT常识 - 正文

在vue3+ts项目里使用query和params传参(vue3加ts)

编辑:rootadmin
在vue3+ts项目里使用query和params传参 一 query 传参 (类似get请求)

推荐整理分享在vue3+ts项目里使用query和params传参(vue3加ts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3 $attrs,vue3 $attrs,vue ts项目,vue3 ts知乎专栏,vue3 ts知乎专栏,vue在项目中怎么用的,vue3 + ts,vue3 ts知乎专栏,内容如对您有帮助,希望把文章链接给更多的朋友!

query 传参方式①

传递方组件

home.vue

<template><div class='c'> <p>query传参</p> <el-button type="success" @click="toList"> to list</el-button></div></template><script lang='ts' setup>import { ref } from 'vue'// 1 引入路由跳转方法useRouterimport { useRouter } from 'vue-router'// 2 拿到实例const router = useRouter()// 3 ref定义基本类型数据const name = ref('梨花白')// 4 query传参const toList = ()=>{ router.push({ //这种对象式传参写法 query除开和path搭配外还可以和name一起使用 path:'/list', //或者这样 path和name任选其一 //name:'List', query:{ name:name.value } })}</script><style scoped>.c{ width: 80%; padding: 20px; margin: 0 auto; border:1px solid red;}.c>p>span{ color:coral;}</style>

看下 router/index.ts 文件

import { createRouter,createWebHistory,RouteRecordRaw } from 'vue-router'const routes:Array<RouteRecordRaw> = [ { path:'/', component:()=>import('../pages/home.vue') },{ path:'/home', name:'Home',//路由命名 component:()=>import('../pages/home.vue') },{ path:'/list', name:'List',//路由命名 为路由跳转作准备 component:()=>import('../pages/list.vue') },{ //定义404页面 path:'/404', component:()=>import('../pages/notfound.vue') },{ //匹配未定义路由 然后重定向至404页面 path:'/:pathMath(.*)', redirect:'/404' }]const router = createRouter({ routes, history:createWebHistory()})export default router

有两个注意点

① ref定义响应式基本类型数据后,修改和赋值要带上 .value

② query是一个对象类型 所以我们定义的基本类型数据不能直接赋值 要给对象式写法 {}

像以下两种写法都是报错的

<script lang='ts' setup>import { ref } from 'vue'// 1 引入路由跳转方法useRouterimport { useRouter } from 'vue-router'// 2 拿到实例const router = useRouter()// 3 ref定义基本数据const name = ref('梨花白')// 4 query传参const toList = ()=>{ router.push({ path:'/list', query:name //报错 不能将类型“Ref<string>”分配给类型“LocationQueryRaw”。 //类型“Ref<string>”中缺少类型“string”的索引签名 })}</script><script lang='ts' setup>import { ref } from 'vue'// 1 引入路由跳转方法useRouterimport { useRouter } from 'vue-router'// 2 拿到实例const router = useRouter()// 3 ref定义基本数据const name = ref('梨花白')// 4 query传参const toList = ()=>{ router.push({ path:'/list', query:name.value //报错 不能将类型“string”分配给类型“LocationQueryRaw” })}</script>

接收方组件

list.vue

<template><div class='c'> <p>query接参</p> <!-- 4 展示数据 --> <p>name: <span>{{ name }}</span></p></div></template><script lang='ts' setup>// 1 引入useRoute路由信息方法import { useRoute } from 'vue-router'// 2 获取实例const route = useRoute()// 3 解构赋值const { query:{name} } = route</script><style scoped>.c{ width: 80%; padding: 20px; margin: 0 auto; border:1px solid red;}.c>P>span{ color:coral;}</style>

效果:

动态效果:

 以上 我们可以得知 当使用query传参时,参数的详细内容都会在地址栏完整的展示出来。

这对于数据安全来说是致命的

当然也有它自有的优势:刷新不会丢失数据

下面看看使用query传参的另一种形式:?传参

query 传参方式②

传递方组件

在vue3+ts项目里使用query和params传参(vue3加ts)

home.vue

<template><div class='c'> <p>query传参</p> <el-button type="success" @click="toList"> to list</el-button></div></template><script lang='ts' setup>import { toRefs,ref,reactive } from 'vue'// 1 引入路由跳转方法useRouterimport { useRouter } from 'vue-router'// 2 拿到实例const router = useRouter()// 3 ref定义基本数据const name = ref('桃花夭')// 4 query ?传参 const toList = ()=>{ router.push('/list?name=' + name.value) //也可以使用ES6里的模板字符串 //router.push(`/list?name=${name.value}`)}</script><style scoped>.c{ width: 80%; padding: 20px; margin: 0 auto; border:1px solid red;}.c>p>span{ color:coral;}</style>

效果:

 动态效果:

两者效果别无二致 也有同学说我在传入引用类型数据时老是报错 怎搞嘞

好的 下面开始传递引用类型数据

传递方组件

home.vue

<template><div class='c'> <p>query传参</p> <el-button type="success" @click="toList"> to list</el-button></div></template><script lang='ts' setup>import { ref,reactive } from 'vue'// 1 引入路由跳转方法useRouterimport { useRouter } from 'vue-router'// 2 拿到实例const router = useRouter()// 3 定义数据接口类型interface props { id:number, content:string}// 4 reactive定义引用类型数据const arr:props[] = reactive([ { id:1, content:'关山难越,谁悲失路之人?' },{ id:2, content:'萍水相逢,尽是他乡之客!' }])// 4 或这样// const arr = reactive([// {// id:1,// content:'关山难越,谁悲失路之人?'// },{// id:2,// content:'萍水相逢,尽是他乡之客!'// }// ] as props[])// 5 query ?传参 const toList = ()=>{ router.push('/list?arr=' + JSON.stringify(arr)) //也可以使用模板字符串 // router.push(`/list?arr=${JSON.stringify(arr)}`)}</script><style scoped>.c{ width: 80%; padding: 20px; margin: 0 auto; border:1px solid red;}.c>p>span{ color:coral;}</style>

接收方组件

list.vue

<template> <div class="c"> <p>query接参</p> <!-- 4 展示数据 --> <p v-for="item in arr" :key="item.id"> <span>{{ item.content }}</span> </p> </div></template><script lang="ts" setup>// 1 引入useRoute方法import { useRoute } from "vue-router";// 2 获取实例const route = useRoute();// 3 使用JSON.parse()方法把传过来的字符串参数转回对象const arr = JSON.parse(route.query.arr as string);</script><style scoped>.c { width: 80%; padding: 20px; margin: 0 auto; border: 1px solid red;}.c > P > span { color: coral;}</style>

效果:

动态效果:

所以是

在使用?传参传入引用类型数据时 传递时要使用JSON.stringify()方法转成字符串类型

在接收时 要使用JSON.parse()方法再转回最初的类型

易错点如下:

 query 传参方式③

其实也就是

本文链接地址:https://www.jiuchutong.com/zhishi/295959.html 转载请保留说明!

上一篇:深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)

下一篇:vuex中this.$store.commit和this.$store.dispatch的用法

  • oppo手机纯净模式怎么关闭(oppo手机纯净模式怎么开启)

    oppo手机纯净模式怎么关闭(oppo手机纯净模式怎么开启)

  • 苹果11侧边按钮怎么关机(苹果11侧边按钮失灵怎么办)

    苹果11侧边按钮怎么关机(苹果11侧边按钮失灵怎么办)

  • 淘宝怎么看以前的购买记录(淘宝怎么看以前快递的物流)

    淘宝怎么看以前的购买记录(淘宝怎么看以前快递的物流)

  • 来电提醒有几种可能(来电提醒是干什么用的)

    来电提醒有几种可能(来电提醒是干什么用的)

  • 快手取消关注粉丝团还在吗(快手取消关注粉丝团等级会掉吗)

    快手取消关注粉丝团还在吗(快手取消关注粉丝团等级会掉吗)

  • h20r1353用什么代换(h20r1353可以用25n120代换吗)

    h20r1353用什么代换(h20r1353可以用25n120代换吗)

  • iphone8p机身尺寸(iphone8p的机身尺寸)

    iphone8p机身尺寸(iphone8p的机身尺寸)

  • 手机抢不了红包怎么回事(手机抢不了红包是什么原因呢)

    手机抢不了红包怎么回事(手机抢不了红包是什么原因呢)

  • 抖音无法下载视频怎么办(抖音无法下载视频,只可以复制链接)

    抖音无法下载视频怎么办(抖音无法下载视频,只可以复制链接)

  • 抖音蓝v营业执照可以用别人的吗(抖音蓝v营业执照)

    抖音蓝v营业执照可以用别人的吗(抖音蓝v营业执照)

  • access2010是系统软件吗(access2010属于什么管理系统)

    access2010是系统软件吗(access2010属于什么管理系统)

  • 华为p30原相机怎么调滤镜(华为p30原相机怎么开曝光)

    华为p30原相机怎么调滤镜(华为p30原相机怎么开曝光)

  • 电脑怎么扫描文件步骤(电脑怎么扫描文件图片)

    电脑怎么扫描文件步骤(电脑怎么扫描文件图片)

  • 华为mate30能用谷歌吗(华为mate30能用谷歌服务吗)

    华为mate30能用谷歌吗(华为mate30能用谷歌服务吗)

  • 苹果xsmax支持18w快充吗

    苹果xsmax支持18w快充吗

  • 台式电脑怎么插u盘(台式电脑怎么插音响)

    台式电脑怎么插u盘(台式电脑怎么插音响)

  • 快手里的发现是热门吗(快手里的发现是根据你浏览的推荐)

    快手里的发现是热门吗(快手里的发现是根据你浏览的推荐)

  • 苹果11后背是玻璃吗(苹果11后背玻璃容易碎吗)

    苹果11后背是玻璃吗(苹果11后背玻璃容易碎吗)

  • 电影密钥是什么(电影密钥能破解吗)

    电影密钥是什么(电影密钥能破解吗)

  • 华为微信美颜怎么开(华为微信美颜怎么开美颜相机)

    华为微信美颜怎么开(华为微信美颜怎么开美颜相机)

  • 三星g9650港版吗(三星g9650是什么版)

    三星g9650港版吗(三星g9650是什么版)

  • 微信朋友圈保留的编辑到哪里找回(微信朋友圈保留多久)

    微信朋友圈保留的编辑到哪里找回(微信朋友圈保留多久)

  • 如何关闭QQ厘米秀(qq 关闭厘米)

    如何关闭QQ厘米秀(qq 关闭厘米)

  • macOS11怎么关闭睡眠模式? mac禁止电脑休眠的技巧(macos15关闭sip)

    macOS11怎么关闭睡眠模式? mac禁止电脑休眠的技巧(macos15关闭sip)

  • inux创建一个文件夹方法(linux创建一个文件并写入内容)

    inux创建一个文件夹方法(linux创建一个文件并写入内容)

  • 车辆购置税税收优惠
  • 购房发票契税票丢了可以补吗
  • 借贷利息怎么算
  • 合并成本是
  • 民办学校房屋要求
  • 开票方丢失记账怎么处理
  • 客运地方税务局监制发票还能用吗?
  • 行政单位盘盈固定资产应按什么入账
  • 应收账款平均数
  • 未达账项有几种情况
  • 企业收到银行收款通知
  • 公司补贴怎样做分录?
  • 收到单位预交卖材料款如何做会计分录?
  • 销售货物并收取运费税率
  • 个人独资企业法人承担什么责任
  • 社保企业二次扣款怎么扣
  • 营改增住宿费的进项税可以抵扣吗
  • 私人企业的资金来源
  • 雇主责任险能否证明劳动关系
  • 发票虚开税务局要求补税怎么办?
  • 土地使用税与房产税的区别
  • 企业亏损减资的会计处理
  • 未分配利润转入本年利润
  • 用人单位垫付生育津贴的凭证怎么做
  • 股东认缴和实缴的会计分录
  • 固定资产弃置费怎么算
  • 多发的工资可以从下月扣除吗
  • 什么是租赁公司的主营业务
  • 预提利息的分录怎么做
  • 货没到申请退款玩付邮费吗
  • win10关闭自动更新方法永久
  • php current
  • 财政应返还额度是什么意思?
  • 报废汽车残值收入的商品编码编码
  • php 读取文本文件
  • 辛华达瀑布,加拿大贾斯珀国家公园 (© Schroptschop/Getty Images)
  • 在申报季度企业所得税时,残疾人工资可以加计扣除吗
  • 跨域的几种方法
  • 公司给员工购买商业保险报销哪些
  • php自带的加密解密函数
  • Pytorch深度学习实战3-6:详解网络骨架模块nn.Module(附实例)
  • 使用服务器
  • 增值税纳税申报操作流程
  • 怎么用php写一个简单框架
  • phpcms使用教程
  • phpweb缓存技术
  • 未使用的固定资产计提折旧应当计入
  • celery eventlet
  • 房产税的征收范围和标准有哪些
  • 银行对账单可以作为原始凭证入账吗
  • 个体工商户税收标准2023年
  • 国际货运代理企业不得从事的业务是
  • 个税汇算要清缴么
  • 发票开错抬头做红字发票的账务处理是?
  • 其他应付款属于哪类
  • 所有者权益的减少是什么意思
  • 汽车保险费能不能不交
  • 交易性金融资产属于什么科目
  • sql语句的基本语法
  • mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
  • win8不好吗
  • win8系统 Cisco VPN 442错误怎么办?解决方法介绍
  • efi ghost win7
  • unity预处理命令
  • canvas画心形
  • 游戏开发那些事
  • jqueryon事件
  • 巧用dos命令合并图层
  • 批处理应用实例
  • opencv for python
  • unity总结
  • python第九套答案
  • 二级联动什么意思
  • 实例分析法名词解释
  • js弹出框怎么写
  • 单张发票开票限额?
  • 平原新区郑州外国语学校
  • 1月纳税申报截止时间
  • 住宅区地下车位产权归属
  • 香水与香精有啥不一样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设