位置: 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的用法

  • 真我BudsWireless2和BudsWireless2Neo哪款好(真我budswireless2s怎么样)

    真我BudsWireless2和BudsWireless2Neo哪款好(真我budswireless2s怎么样)

  • 微信怎么换身份证实名认证(微信怎么换身份证实名认证没有银行卡)

    微信怎么换身份证实名认证(微信怎么换身份证实名认证没有银行卡)

  • 360浏览器怎么翻译英文网站(360浏览器怎么翻译网站)

    360浏览器怎么翻译英文网站(360浏览器怎么翻译网站)

  • 荣耀x10max卡槽在哪里(荣耀x10卡2在哪里装)

    荣耀x10max卡槽在哪里(荣耀x10卡2在哪里装)

  • 正在检查磁盘错误,这可能要花费一个多小时怎么回事(正在检查磁盘错误一个多小时)

    正在检查磁盘错误,这可能要花费一个多小时怎么回事(正在检查磁盘错误一个多小时)

  • 1+7pro和1+7对比(1+7pro对比1+7tpro)

    1+7pro和1+7对比(1+7pro对比1+7tpro)

  • 端口号范围(自定义端口号范围)

    端口号范围(自定义端口号范围)

  • 苹果11日历在哪里设置节日(苹果11日历在哪里设置)

    苹果11日历在哪里设置节日(苹果11日历在哪里设置)

  • 手机wlan打不开怎么办(手机WLAN打不开修理费)

    手机wlan打不开怎么办(手机WLAN打不开修理费)

  • 淘宝一般多久自动确认收货(淘宝一般多久自动付款)

    淘宝一般多久自动确认收货(淘宝一般多久自动付款)

  • 淘宝退货两个订单可以用一个快递单号吗(淘宝退货两个订单可以填写一个物流单号吗)

    淘宝退货两个订单可以用一个快递单号吗(淘宝退货两个订单可以填写一个物流单号吗)

  • lld al10是什么型号(lldal10是什么型号多少钱)

    lld al10是什么型号(lldal10是什么型号多少钱)

  • 交换机vlan什么意思(交换机vlan配置原理)

    交换机vlan什么意思(交换机vlan配置原理)

  • wifi可以发微信却不能打开网页和视频(wifi可以发微信却不能玩游戏)

    wifi可以发微信却不能打开网页和视频(wifi可以发微信却不能玩游戏)

  • qq强制会话是啥意思(qq强制会话app)

    qq强制会话是啥意思(qq强制会话app)

  • word图片四周型环绕怎么设置(word图片四周型环绕居中怎么设置)

    word图片四周型环绕怎么设置(word图片四周型环绕居中怎么设置)

  • dvi和vga接口是什么意思(dvi接口与vga区别)

    dvi和vga接口是什么意思(dvi接口与vga区别)

  • 快手加入黑名单会怎样(快手加入黑名单关系会解除吗)

    快手加入黑名单会怎样(快手加入黑名单关系会解除吗)

  • 华为nova3i支持nfc功能吗(华为nova3i支持电信高清通话吗)

    华为nova3i支持nfc功能吗(华为nova3i支持电信高清通话吗)

  • 刷宝为什么无法提现(刷宝为什么登不进去了)

    刷宝为什么无法提现(刷宝为什么登不进去了)

  • 手机内置电池更换(手机内置电池更换图解)

    手机内置电池更换(手机内置电池更换图解)

  • honor手机怎样反回主页(honor手机怎么返回桌面)

    honor手机怎样反回主页(honor手机怎么返回桌面)

  • 计算机二级改错题技巧(计算机二级改错题求最小公倍数)

    计算机二级改错题技巧(计算机二级改错题求最小公倍数)

  • 趣步交换密码怎么设置(趣步交换密码怎么取消)

    趣步交换密码怎么设置(趣步交换密码怎么取消)

  • 玄武湖公园的金色银杏叶,中国南京 (© SIPA Asia/ZUMA Wire/Alamy)(玄武湖公园游玩)

    玄武湖公园的金色银杏叶,中国南京 (© SIPA Asia/ZUMA Wire/Alamy)(玄武湖公园游玩)

  • 小微企业所得税费用怎么算
  • 税后净营业利润和净利润的区别
  • 主营业务税金及附加大概比例
  • 小规模公司的外汇业务
  • 库存股是什么科目的备抵
  • 小微企业应纳税所得额超过300万怎么办
  • 税率开错情况说明
  • 逾期认证未抵扣的文件
  • 车辆商业险和交强险可以分开买吗
  • 公司前期没有收入开支怎么记账
  • 被辞退还有退休金吗
  • 企业间借贷利息规定
  • 管理费用纳税调增账务处理
  • 减免所得税额和抵免所得税额的区别
  • 银行对账单是否属于会计档案
  • 合作社开具的免税普票计算抵扣
  • 支票进账对方没钱开户行会打电话叫他存钱吗?
  • 计提坏账准备需要什么附件
  • 联想笔记本电脑官网旗舰店
  • 如何关闭windows10自动更新
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • uc浏览器缓存视频删除了还占内存
  • thinkphp paginate
  • 收到预付卡发票分录
  • Win11 Build 22000.65更新体验:汉化更完善,右下角返回桌面回归
  • win10显示无法连接蓝牙
  • 企业向银行申请办理非原路的服务贸易退汇,银行应当
  • 盘盈盘亏固定资产
  • 超期未认证的进项发票怎么处理
  • 出租门面是否缴增值税
  • nvm使用教程
  • 处置可供出售金融资产原先进入公允价值变动损益
  • php引用文件的方法
  • 税控盘是干什么用的操作有风险吗
  • thinkphp框架作用
  • 使用php连接多种数据库
  • npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve dependency
  • 创建数据的命令是
  • php如何遍历二维数组
  • 增值税发票丢失罚款多少
  • lspv命令详解
  • 车辆保险费怎么入账
  • 企业报废原材料如何处理
  • db2udb
  • 纳税人识别号和信用代码一样吗
  • MYSQL administrator 使用
  • 印花税计入税金及附加科目吗
  • 以股权入资该怎么办
  • 企业的营业税金怎么计算
  • 出口退税红字冲减
  • 地租钱不付如何为
  • 购买苗木怎么做政府会计分录
  • 印花税计入哪个会计分录
  • 银行结算卡年费多少
  • mysql8设置时区
  • sql server默认实例
  • mysql8 递归
  • window怎么操作
  • vmware虚拟机找不到了
  • 每天一条linux命令
  • dllhost应用程序异常
  • win10怎么设置开机启动软件
  • linux设置用户的密码
  • Win7登录密码
  • 联想 恢复
  • js数组entries
  • sparsomycin
  • Unity Spine Skeleton Animation 2D骨骼动画 For Game 介绍
  • 原生javascript开发
  • 用css制作网页的步骤
  • 显示随机数
  • python简明
  • js对象类型的语法规则
  • 如何在js中实现输入
  • 重大税务违法案件一案双查标准
  • 海关进口增值税如何入账
  • 电子税务局报表报送在哪里
  • 企业调查表资金怎么填
  • 国税是哪几种
  • 税务征收社保费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设