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

  • 一般纳税人企业所得税多久申报一次
  • 本期免税额怎么填写
  • 税控盘如何看是否反写成功
  • 个体户三万以内免个税
  • 预销售符合退款条件的商品记什么分录
  • 交通补贴补贴可以税前扣除吗?
  • 公共租赁住房折旧
  • 一般纳税人能否开3%的普票
  • 财产租赁合同印花税优惠政策
  • 运输公司赔偿计入什么科目
  • 房地产增值税发票有什么用
  • 企业收取客户利润违法吗
  • 土地增值税清算利息扣除规定
  • 银行手续费要发票什么时候开始的
  • 增值税申报金额含税吗
  • 增值税2017年起征点
  • 技术维护费属于劳务还是研发和技术服务
  • 事业单位考试一门多长时间
  • 退还城建税
  • 人力资源部报销购买办公家具款
  • 代订住宿费可以开专票吗
  • 计提福利费会计科目
  • 应收账款现金折扣计入什么科目
  • 鸿蒙系统最新版本
  • 剑灵玩一会就崩溃
  • 个体户个人所得税预缴纳税申报
  • 电脑折旧率计算公式
  • 非经营性单位支出费用是什么
  • php cgi配置
  • 隐藏登录界面的软件
  • 工地包工工程款一般怎么结
  • 企业购进房产怎么抵扣
  • 荣耀畅玩7怎么截长图
  • Yii使用技巧大汇总
  • thinkphp6依赖注入
  • 专利年费的滞纳金
  • 准备动作怎么做
  • 增值税专用发票电子版
  • 分配结转制造费用时借方科目?
  • 代垫运费的增值税可以抵扣吗
  • ijk解码是什么意思
  • pytorch m1
  • 结转结余的概念
  • 二手车减免增值税的规定
  • 客户对账单应该哪个部门做
  • 债务重组开场白
  • 简述SQL server管理器的功能
  • select
  • 小企业会计准则适用范围
  • 个人所得税年底退税 可以退多少
  • 劳动报酬收入包含什么
  • 未开票收入确认错属期滞纳金怎么办
  • 商品损耗进项税额怎么算
  • 产品包装设计费属什么费用
  • 车辆抵押贷款影响以后卖车吗
  • 免增增值税的有
  • 应收账款资产减值准备可以在所得税前扣除吗
  • 进项税额抵扣是按税率分开抵扣吗
  • 借主营业务成本贷库存商品什么意思
  • wdcp面板
  • linux安装有几种方法
  • 五个常用的说明方法
  • win7系统磁盘分区必须分区为什么才能安装
  • window8.1重装系统
  • ubuntu 编译ffmpeg
  • 什么是Shell,shell作用
  • cocos2dx3.3 便条提示语功能简单实现
  • 使用node写接口
  • js对象用法
  • jquery中删除节点方法
  • js 队列
  • e87移植
  • 噩梦 1-4
  • 国家税务统一代码查询
  • 税务局打来电话
  • 营业税发票现在可以冲红么
  • 税务ukey版商品编码怎么添加
  • 福建税务局电子
  • 提供劳务者受害责任纠纷赔偿案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设