zoukankan      html  css  js  c++  java
  • Vue 组件的通信

    vue不得不了解的就是组件间的数据通信(暂且不谈vuex插件)。

    通信方式根据组件之间的关系有不同之处。

    组件关系有下面三种:父-->子子-->父非父子

    1、父-->子

    父向子传递数据用prop

    <!--子组件代码-->
    <template>
    	<div> {{message}} </div>
    </template>
    
    <script>
    	export default{
    		name="child",
    		prop: ['message'], //利用prop函数,定义一个"message"变量
    		data(){
    			
    		}
    	}
    </script>
    
    <!--父组件代码-->
    <template>
    	<v-child message="msg"> </v-child>   <!--在这里传值-->

    </template>
    <script> 
      import Child from './child.vue'
      export default{
        name: 'parent',
        components: { 'v-child': Child },
        data(){
          return{ msg:'hello world'
            }
      }
    </script>

     2.子组件给父组件传值($emit) 子组件给父组件传值的中心思想是;通过方法传参,具体用法如下:

    <!-- 子组件部分 -->
    
    <script>
    	data(){
    		return{
    			msg: '123'
    		}
    	},
    	method: {
    		funcName: function(){
    			this.$emit("tanslate",this.msg)
    			//自定义一个tanslate和一个参数this.msg
    		}
    	}
    </script>


    父页面HTML部分: 通过子页面定义tanslate事件调用自定的tanslateText方法
    <v-child v-on:tanslate="tanslateText">  </v-child>
    

     父页面js部分:

    method:{
    	tanslateText:function(text){ //text是字组件传过来的参数
    		console.log(text) //打印出子组件传递过来的参数
    	}
    }
    

      

    3.兄弟组件之间传值

    创建一个store.js文件,注册Vuex
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    //定义state,并将listName设置成一个空对象
    const state = {
    	listName:{} 
    }
    
    /定义mutations,可以传参数,用于设置state里的listName
    const mutations = {
    	set_listname : (state, value) => {
    		state.listName = value ;
    	}
    }
    
    //定义getters,用于获取state里的对象
    const getters = {
    	get_listname: state => {
    		return{ state.listName
    	}
    }
    
    export default new Vuex.store({
    	getters,
    	state,
    	mutations
    })
    

      

    在vue实例中注册store.js

    //main.js
    
    import Vue from 'vue'
    import App from './App'
    import store from './style'
    
    new Vue({
    el : '#app',
    route,
    store,
    template: '<App/>',
    components: {App}
    })
    

      

    后续补充完善



  • 相关阅读:
    Android Studio下载及离线升级方法
    动态调用WebService
    哈哈哈 终于通过自己的努力 把这个模板上长毛的土豆去掉了
    关于“只有注册用户登录后才能阅读该文”
    SQL Server 2008 R2——根据数据查找表名和字段名 根据脏数据定位表和字段
    Windows驱动——虚拟机 虚拟串口 双机调试
    协议——如何制作一个简易的串口通信协议
    问题解决——复合检测项目的定义和使用
    算法——成语首尾接龙 成语接龙
    C++基础——函数指针 函数指针数组
  • 原文地址:https://www.cnblogs.com/ning123/p/10943778.html
Copyright © 2011-2022 走看看