美文网首页
Vue组件(二)组件传值

Vue组件(二)组件传值

作者: fanren | 来源:发表于2021-03-14 16:15 被阅读0次

一、父组件向子组件传值

我们可以用props向子组件传值;

1. 基础用法

  • 组件代码
<template>
  <div>
    // 可以直接使用传值的名称
    这是一个组件: {{ name }}
  </div>
</template>

<script>
export default {
  name: "customInput",
  // 用props接受父组件传的值
  props: ["name"]
};
</script>
  • 父组件使用
<template>
  <div class="home">
    首页
    // 在这里可以直接传值,也可以用动态的方式传值
    // 这里的name是子组件内定义的属性名称
    <customInput name="zhangsan"></customInput>
  </div>
</template>

<script>
import customInput from "./customInput"
export default {
  name: 'Home',
  components: { customInput }
}
</script>
截图

2.props验证

我们可以再子组件内定义props的时候,对props值进行定义(包括类型,默认值等)

<template>
  <div>
    这是一个组件: {{ name }}
  </div>
</template>

<script>
export default {
  name: "customInput",
  props: {
    name: {
      type: String,  // 定义属性的类型必须为字符串
      required: true, // 属性必须传值,否则会报异常
      default: "aaaa"  // 属性的默认值
    }
  }
};
</script>

3.props值监听

当属性值发生变化的时候,我们希望在子组件内监听到它的变化;

<template>
  <div>
    这是一个组件: {{ name }}
  </div>
</template>

<script>
export default {
  name: "customInput",
  props: {
    name: {
      type: String,
    }
  },
  // 使用watch可以监听到数据的变化
  watch: {
   // 监听属性name的变化
    name: {
      immediate: true, // 这个值必须设置为true,否则不会监听
      handler(val) {
        // 属性值变化后,会调用此函数
        console.log(val)
      }
    }
  }
};
</script>

二、子组件向父组件传值

当子组件做了一些操作之后,我们需要告诉父组件,还可能会给父组件传一些值回去;这就需要用到vue里面的自定义事件;

  • 子组件代码
    在子组件内使用$emit(eventName, arg)触发事件
<template>
  <div>
    <el-button type="primary" @click="respondsToClick">点击</el-button>
  </div>
</template>

<script>
export default {
  name: "customInput",
  data() {
    return {
      count: 0
    }
  },
  methods: {
    respondsToClick() {
      this.count += 1
      // 这里触发了change事件,并传递了参数
      this.$emit("change", '点击了' + this.count + '次')
    }
  }
};
</script>

  • 父组件代码
    在父组件内使用$on(eventName)监听事件
<template>
  <div class="home">
    首页:{{ content }}
    // 这里监听change事件,并执行handle方法
    <customInput v-on:change="handle"></customInput>
  </div>
</template>
<script>
import customInput from "./customInput"
export default {
  name: 'Home',
  components: { customInput },
  data() {
    return {
      content: ''
    }
  },
  methods: {
    // 监听事件执行的方法,并接受参数
    handle(val) {
      this.content = val
    }
  }
}
</script>

相关文章

  • Vue - 传值

    Vue 传值有两种:1)父组件向子组件传值(属性传值,Prop传值)2)子组件向父组件传值 一、父组件向子组件传值...

  • (VUE3) 四、组件传值(父子组件传值 & 祖孙组件传值 &v

    1.父子组件传值 vue2中的父子组件传值:父组件: 子组件: vue3中的父子组件传值: 还是用props接收父...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • Vue父子组件通信和双向绑定

    本篇文章主要介绍父子组件传值,组件的数据双向绑定。 1. 基础父子组件传值 父子组件传值,这是Vue组件传值最常见...

  • vue2.0的三种常用传值方式,并且如何实现?

    vue2.0 组件传值方式有三种:父组件向子组件传值,子组件向父组件传值,非父子组件传值 : 父传子: 首先现在父...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • Vue组件传值

    vue组件传值 一、父组件向子组件传值方式: 1. 子组件中定义props,父组件向子组件props进行传值。 2...

  • 04vue2.0-Vue组件化-组件间的数据传递

    Vue组件之间传值 父组件向子组件传值 1.父组件向子组件传值 父组件发送的形式是以属性的形式绑定值到子组件身上。...

  • 前端基础搬运工-VUE模块

    十、VUE模块 基础部分 1. Vue组件间传值 答: -[ ] 1.父子之间的传值 父组件向子组件传值通过p...

网友评论

      本文标题:Vue组件(二)组件传值

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