Vue2.0四——組件傳參

路由配好了 再傳個參唄

注:組件信息流轉的時候只能單向
1 > 父子傳參
傳參:經過屬性
prop:傳遞數據vue

a.父組件傳參給子組件vuex

子組件:
    <ul>
        <li v-for="item in dataList"></li>
    </ul>
    
    export default {
        prop: {              //prop接收傳過來的參數
            dataList: {
                type:Array,
                required:true    //校驗
            }
        },
        data() {
            return {
                dataList: this.dataList
            }
        }
    }
  父組件
    <Position :data-list='List'></Position>

b.子組件傳參給父組件瀏覽器

父組件傳一個函數給子組件
子組件:
    export default {
        prop: ['id','onbuttonInfo'],
        data() {
            return {
                posid: this.id,
                title: 'abc'
            }
        },
        mounted() {
            this.onbuttonInfo(this.title)
        }
    }      
 父組件:
    <Position :id='sid' :onbuttonInfo='handleButonInfo'>職位列表</Position>
    methods:{
        handleButonInfo (msg) {
            console.log(msg)
        }
    }
    注意:瀏覽器的坑 會把buttonInfo 都改爲全小寫

2 > 動態路由傳參函數

方式一:path:'/main/:變量名'   
方式二:
方法:
    傳:
    this.$router.push({name: 'goodslist',params:{"list":this.list}})
    接收:
    data() {
      return {
          goodsList: this.$route.query.list,
          val: ''
      }
    },

3 > 跳級組件傳參 bus總線ui

一、components中建Bus.js文件
    import Vue from 'vue'
    const Bus = new Vue({
        
    })
    export default Bus
二、index。vue中
    import Bus from '../Bus.js'
    mounted() {
        Bus.$on('on-msg',(data)=>{   //訂閱 綁定事 接收參數
            console.log(data);
        })
    }
三、positionList.vue
    import Bus from './Bus.js'
    methods:{
        do() {       //發佈 傳參
            this.$router.push({name:'search',})
            Bus.$emit('on-msg',120)
        }
    }

4 > vuex傳參(重點)請查看個人vuex文章 啦啦~~~~this

相關文章
相關標籤/搜索