vue组件交互 父传子 子传父 非父子

父组件传给子组件:子组件通过props方法接受数据;

子组件传给父组件:$emit方法传递参数

非父子组件间的数据传递,兄弟组件传值
eventBus,就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。项目比较小时,用这个比较合适。(虽然也有不少人推荐直接用VUEX,具体来说看需求咯。技术只是手段,目的达到才是王道。)

父传子
父组件 ↓

通过自定义事件 :msg (随意命名) item.id===》你要传给子组件值
代码:

    <v-child :msg="item.id"></v-child>

子组件 ↓
通过props 来接收父组件传过的值 (item.id)
代码:

        {
                props:['msg']
            }

子传父

子组件↓
代码:
通过childMethod函数 用$emit 传给父组件

<button @click="childMethod">点击就触发父组件事件</button>
                {
                    methods:{
                        childMethod(){
                            this.$emit("getChild","参数")
                        }
                    }
                }

父组件↓
代码:
通过子组件传过来的 @getChild 自定义事件 进行接收
e就是子组件传过来的参数

 <v-child @getChild="parentMethod"></v-child>
                {
                    methods:{
                        parentMethod(e){
                            console.log(e);//e就是事件触发的时候的参数
                            //....
                        }
                    }
                }

非父子
第一种
EventBus 统一事件管理

  this.Event.$emit("事件名称",'参数')
  this.Event.$on("事件名称",(e)=>{

            })

a组件
代码:

<button @click="send">发送</button>
.....
data () {
    return {
        a:"this is a data"
    };
  },
  watch: {},
  computed: {},
  methods: {
      send(){
          this.Event.$emit("sendA",this.a)
      },
      }
  },

b组件
代码:

<p>a传递过来的数据:{{a}}</p>
......
components: {},
  props: [],
  data () {
    return {
        a:"",
        c:""
    };
  },
  watch: {},
  computed: {},
  methods: {
  },
  created () {},
  mounted () {
      this.Event.$on("sendA",(e)=>{
          this.a=e;
          
      })
     
  }

main.js

//全局注册Event
Vue.prototype.Event=new Vue();

第二种:
本地存储
存===》

localStorage.setItem("username", JSON.stringify(this.state.user))

取===》

JSON.parse(localStorage.getItem('username'))

第三种:
vuex

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值