美文网首页
Vue 组件数据传递

Vue 组件数据传递

作者: CoderMiner | 来源:发表于2020-02-27 10:43 被阅读0次

Vue 组件数据传递

父组件->子组件

父组件到子组件的数据通过 props 传递

  • 在父组件注册子组件,传递数据到子组件

父组件 App.vue , 传递父组件中的数据 <Child :todos="items" />

<template>
  <div id="app">
    <img :src="url" />
    <Child :todos="items" />
  </div>
</template>

<script>
import Child from "./components/Child";

export default {
  name: "App",
  components: {
    Child,
  },
  data() {
    return {
      items: [
        {
          id: 1,
          title: "kevin"
        },
        {
          id: 2,
          title: "john"
        }
      ],
      
    };
  }
};
</script>
  • 子组件 Child.vue 定义 props 用来接收父组件的数据
<template>
  <div>
    <ul>
      <li v-for="(item, index) in todos" :key="index">{{ item.title }}</li>
    </ul>
  </div>
</template>
<script>
export default {
  name: "Child",
  props: ["todos"],
  data() {
    return {};
  }
};
</script>

子组件->父组件

子组件到父组件的数据传递,主要是通过事件传递

  • 子组件中定义相关的事件,传递一个图片的url传递给父组件,并显示,通过 $emit

Child.vue

<button @click="emittClick">Click</button>
  methods: {
    emittClick() {
      this.$emit("replace-img", "https://vuejs.org/images/logo.png");
    }
  }
  • 父组件接收子组件的数据

App.vue

<img :src="url" />
<Child :todos="items" v-on:replace-img='onChangeImg'/>
  methods: {
    onChangeImg(url) {
      this.url = url;
    }
  }

兄弟组件之间传递数据

通过 bus 传递数据

Events.js

import Vue from 'vue'

export const EventBus = new Vue();
  • 组件1 EmitterComponent.vue 发送数据
<template>
  <button @click="clickMe()">Click Me</button>
</template>
<script>
import { EventBus } from "../Events";

export default {
  data() {
    return {
      count: 0
    };
  },

  methods: {
    clickMe() {
      this.count += 1;
      EventBus.$emit("emittedEvent", this.count);
    }
  }
};
</script>

  • 组件2 ListenComponent.vue 接收数据
<template>
  <div>The Counter is : {{ value }}</div>
</template>
<script>
import { EventBus } from "../Events";

export default {
  data() {
    return {
      value: 0
    };
  },
  mounted() {
    EventBus.$on("emittedEvent", data => {
      this.value = data;
    });
  }
};
</script>

  • 注册使用

App.vue

template

    <EmitterComponent />
    <ListenComponent />

script

  components: {
    EmitterComponent,
    ListenComponent
  },

使用 vuex 进行数据管理,单独介绍 vuex 的使用方法 待续...

相关文章

  • vue父子组件传递数据方法

    标签(空格分隔): vue 父组件向子组件传递数据 Vue中父组件向子组件传递数据用props 举个例子 父组件中...

  • Vue组件间数据传递

    前言 总结vue组件间的数据传递 路由传参 父组件传递数据给子组件---props 子组件传递数据给父组件---$...

  • Vue 组件数据传递

    Vue 组件数据传递 父组件->子组件 父组件到子组件的数据通过 props 传递 在父组件注册子组件,传递数据到...

  • vue组件间通信

    vue组件间通信 1.父组件向子组件传递数据--props 在vue2.0中使用props实现向子组件传递数据: ...

  • 【Vue学习笔记】—— 组件之间传递数据 { }

    学习笔记 作者:oMing Vue 组件1.通过绑定传递数据(父组件 ——》 子组件) 2.通过事件传递数据 ...

  • Vue父组件调用子组件事件

    Vue父组件向子组件传递事件/调用事件 不是传递数据(props)哦,适用于 Vue 2.0 方法一:子组件监听父...

  • vue常见面试题

    1.vue优点 2.vue父组件向子组件传递数据? 3.子组件像父组件传递事件 4.v-show和v-...

  • #搭建Vue+TypeScript项目(五)

    vue组件 组件中使用typescript 主文件 父子组件传递数据 子文件lefebar

  • vue常见面试题

    双向数据绑定的原理: vue父组件向子组件传值(属性绑定):传递数据(props): 传递方法(this.$emi...

  • Vue-自定义事件

    在父组件使用prop 传递数据给子组件,子组件则是通过事件传递数据给父组件的。 Vue实例都会实现事件接口: 1....

网友评论

      本文标题:Vue 组件数据传递

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