美文网首页让前端飞Web前端之路
vue通信、传值的多种方式

vue通信、传值的多种方式

作者: 我就是z | 来源:发表于2019-09-26 16:30 被阅读0次

    1. 通过路由带参数进行传值

    this.$router.push({ path: '/conponentsB', query: { orderId: 123 } }) // 跳转到B
    
    this.$route.query.orderId // 在B组件拿到的参数
    

    2. 通过设置 Session Storage缓存的形式进行传递

    const orderData = { 'orderId': 123, 'price': 88 }
    sessionStorage.setItem('缓存名称', JSON.stringify(orderData))
    const dataB = JSON.parse(sessionStorage.getItem('缓存名称')) // 在其他组件拿到session Storage缓存的值
    

    3. 父组件向子组件传值

    // parant.vue
    <template>
        <div>
            <Child :number="number"></Child>
        </div>
    </template>
    <script>
        import Child form 'component/child'
        export default{
            component:{
                Child
            },
            data(){
                return {
                    number:'123'
                }
            }
        }
    </script>
    // 在父组件引入子组件,并把number传给子组件
    
    // Child.vue
    <template>
        <div>
            {{number}} // 显示父组件传来的值 123
        </div>
    </template>
    <script>
        export default{
            props:{ // 限制父组件传递过来的数据类型,如果不符合就报错
                'number':[Number,String],
                'string':[String], // 可以传递多个值,逗号隔开
            }
        }
    </script>
    

    4. 子组件向父组件传值

    // Child.vue
    <template>
        <div>
            <button @click="add">点击</button>
            <!-- 子组件通过触发emit给父组件传递数据 -->
        </div>
    </template>
    <script>
        export default{
            methods:{
                add(){ this.$emit('emitEvent','子组件传递给父组件的数据')
                }
            }
        }
    </script>
    
    // parant.vue
    <template>
        <div>
            <span>{{num}}<span>
            <Child @emitEvent= "setNum"></Child>
            <!-- 触发父组件的一个方法,然后拿到子组件传过来的值,再做其他操作 -->
        </div>
    </template>
    <script>
        import Child form 'component/child'
        export default{
            component:{
                Child
            },
            data(){
                return {
                    num:''
                }
            },
            methods(){
                setNum(data){
                    this.num = data // 子组件传递给父组件的数据
                }
            }
        }
    </script>
    

    5. 大型项目用vuex

    具体怎么用vuex,可以简单大概了解下
    https://www.jianshu.com/p/5f5700e9f43e

    相关文章

      网友评论

        本文标题:vue通信、传值的多种方式

        本文链接:https://www.haomeiwen.com/subject/itlnuctx.html