vue两个组件间值的传递或修改

1、可以用公共的父组件来实现;

2、可以在store.js里面在设置公共变量;

3、也可以用本地存储localStorage.setItem()和localStorage.getItem(),通过修改本地存储的值和获取修改后的值来实现;

4、就是父子组件间的值的传递与修改props,这里需要注意的是子组件里面不      能直接修改props里面接受的值,需要定义一个中间变量来接受props里的值并修改,通过$emit即this.$emit('checkDisplay',this.displayChild);来传给父组件

5、也可以通过路由来传值query,params,     

    a、  //跳转页面并传值

     this.$router.push({path:'/index',query:{name:'haha'}}) 

     //获取传递过来的数据

     this.$route.query.name 

    但是要注意的是:

    如果query里面的属性后面跟的是一个对象的话,那需要把对象转成字符串类型在传递,否则传递过后页面刷新则数据变成[obj,obj]

例如:如果传递的name是一个对象的话,this.$router.push({path:'/list/detail',query:{name:this.name}})

则在第一次获取数据的时候是正常:

可是刷新页面后就变成:

如果是转换字符串类型对象后在传递呢this.$router.push({path:'/list/detail',query:{name:JSON.stringify(this.name)}}),

页面刷新前后都是这个类型,

然后可以用JSON的parse方法把它转换成我们常用的json对象:JSON.parse(this.$route.query.name)

   b、 或者是 //跳转页面并传值  

要记住的是params只能用name跳转,如果用path来传值则传不过去  ,而且这种传值页面刷新后所传值将清空

     this.$router.push({name:'index',params:{name:'nana'}})

     //获取传递过来的数据

     this.$route.params.name 

     c、也可以直接传值

     this.$router.push('/index/'+item.name)   //跳转页面并传值,不过这种传值前提需在路由里面在路径后面添加“/路径/:参数名”

     this.$route.params.参数名                       //获取数据

     但是这种方式会在地址栏显示数据,不安全

6、路径地址传值,params、query是什么?

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params,及上面方法c

query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。和上面方法a同理

当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值