vue组件间的数据传递

父组件向子组件传递数据

在 Vue 中,可以使用 props 向子组件传递数据。

 
App.vue
HelloWorld.vue

在子组件部分:

 

 

如果需要从父组件获取 logo 的值,就需要使用 props: ['logo']

在父组件部分

 

 

在调用组件的时候,使用 v-bind 将 logo 的值绑定为 App.vue 中定义的变量 logoMsg

然后就能将App.vue中 logoMsg 的值传给 header.vue 了

子组件向父组件传递数据

 
Hom.vue
App.vue

子组件主要通过事件传递数据给父组件

在子组件:

<template>
 <div class="home">  
     <div class="name">
       <label>
         <span>请输入:</span>
         <input v-model="username" @change="setUser" />
       </label>
     </div>
 </div>
</template>
//当<input>的值发生变化的时候,将 username 传递给 App.vue,
首先声明一个了方法 setUser,用 change 事件来调用 setUser
<script>

export default {
 name: "name",
 data() {
   return {
     username: ''
   };
 },
 methods: {
   setUser: function() {
     this.$emit('transferUser',this.username)
   }
 }
}
</script>
//在 setUser 中,使用了 $emit 来遍历 transferUser 事件,并返回 this.username

 



其中 transferUser 是一个自定义的事件,功能类似于一个中转,this.username 将通过这个事件传递给父组件 

父组件部分

<template>
  <!-- 组件 -->
  <!-- <router-view></router-view> -->
  <div id="app">
    <div>
      <p>名字为:{{user}}</p>
      <NameDiv @transferUser="getUser"></NameDiv>
    </div>
  </div>
</template>
//在父组件 App.vue 中,声明了一个方法 getUser,
用 transferUser 事件调用 getUser 方法,获取到从子组件传递过来的参数 username

<script>
// 导入组件
import HelloWord from "./components/HelloWorld.vue";
import NameDiv from "./views/Home";
export default {
  name: "app",
  data() {
    return {
      user: "",
    };
  },
  methods: {
    getUser(msg) {
      this.user = msg;
    }
  },
  //注册组件
  components: {
    NameDiv
  }
};
//getUser 方法中的参数 msg 就是从子组件传递过来的参数 username
</script>
<style>
</style>

 

结果如图:

 

 

子组件与子组件间数据传递

状态管理工具vuex

posted @ 2019-11-01 16:55  SaberInoryKiss  阅读(211)  评论(0编辑  收藏  举报