vue组件传值props bus emit

1.props:
在父组件中引入子组件, 子组件中props:[]或props: {}接收
eg:
父组件中:<child :foo="foo"/>

 components: {
            child 
        },
        data() {
            return {
                foo: '传给子组件'
            }
        }

子组件中

props: ['foo'] 或者
    props: {
        foo: {
            type: String,  // type: [String, Number]
            defalut: ''
        }
    }

2.emit
// 父组件中

// html
    <child @showCityName="updateCity"/>
    // js
    methods:{
      updateCity(cityname){ // 触发子组件
        console.log(cityname) // 得到值‘四川’
      }
    }

子组件中

// html
        <button @click="getmethods">点击</button>
    // js
        methods: {
            getmethods() {
                let cityname = '四川'
                this.$emit('showCityName', cityname) // 对应父组件中子上事件, 传的值
            }
        }

3.bus
1.首先建一个文件bus.js

内容:   import Vue from 'vue'
            const Bus = new Vue()
            export default Bus
2.main.js里面全局注册
    内容:   import Bus from '' 
            Vue.prototype.$bus = Bus
3.使用 
    eg:     1.存入bus中:
                <button @click="abus">click me</button>  
                methods: {
                    abus () {
                        this.$bus.$emit('one', 'adad')
                        this.$router.push('')
                    }
                },
                // 如果两个页面毫无其他关联则需要使用,防止在取出bus时未挂载上
                beforeDestroy () {
                    this.$bus.$emit('one', 'adad')
                }
            2.取出bus:
                data(){
                    return{
                        message:""
                    }
                },
                created() {
                    this.$bus.$on('one', content => {
                        this.$bus.message = content
                        this.$bus.$off('one') // 清除bus
                    })
                },
                mounted() {
                    this.message = this.$bus.message
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值