vue props 接收 function

在Vue 2中,组件可以通过props接收父组件传递的数据,包括函数。这使得父组件能够将函数传递给子组件,子组件可以使用这些函数来与父组件通信。

以下是一个简单的示例,展示了如何在Vue 2组件中接收和使用props函数:

父组件 (ParentComponent.vue):

子组件
<template>
  <div>
    <button @click="callParentMethod">Call Parent Method</button>
  </div>
</template>
 
<script>
export default {
  props: {
    parentMethod: {
      type: Function,
      required: true
    }
  },
  methods: {
    callParentMethod() {
      // 调用从父组件接收的方法
      if (this.parentMethod) {
         // 这是一个参数
        this.parentMethod({id:'1'});
      }
    }
  }
};
</script>
// 父组件
<template>
  <div>
    <child-component :parentMethod="parentMethod" />
  </div>
</template>
 
<script>
import ChildComponent from './ChildComponent.vue';
 
export default {
  components: {
    ChildComponent
  },
  methods: {
    parentMethod(rowData) {
      // 父组件的方法被调用,参数是 rowData
      console.log('This is a message from the parent component.',rowData);
    }
  }
};
</script>

 在这个例子中,ParentComponent 定义了一个方法 parentMethod,并将它作为 parentMethod prop 传递给 ChildComponent 组件。ChildComponent 接收这个 prop,并在用户点击按钮时调用它。这展示了父子组件之间通过函数prop进行通信的一个简单用例

Vue中的props接收可以通过以下两种写法实现: 1. 对象语法 在组件中,使用props选项来指定props的类型、验证规则和默认值。在父组件中,可以通过v-bind指令来传递props。 组件中的写法: ``` Vue.component('my-component', { props: { // 基础类型检测 (`null` 意思是任何类型都可以) propA: Number, // 多种类型 propB: [String, Number], // 必传且是字符串 propC: { type: String, required: true }, // 数字,有默认值 propD: { type: Number, default: 100 }, // 数组/对象的默认值应当由一个工厂函数返回 propE: { type: Object, default: function () { return { message: 'hello' } } }, // 自定义验证函数 propF: { validator: function (value) { return value > 10 } } }, template: '<div>{{ propA }} {{ propB }} {{ propC }} {{ propD }} {{ propE }} {{ propF }}</div>' }) ``` 父组件中的写法: ``` <my-component prop-a="123" :prop-b="456" prop-c="789" :prop-d="1000" :prop-e="{ message: 'world' }" :prop-f="20" ></my-component> ``` 2. 数组简写语法 在组件中,使用props数组来指定props的名称。在父组件中,可以通过v-bind指令来传递props。 组件中的写法: ``` Vue.component('my-component', { props: ['propA', 'propB', 'propC'], template: '<div>{{ propA }} {{ propB }} {{ propC }}</div>' }) ``` 父组件中的写法: ``` <my-component :prop-a="123" :prop-b="456" :prop-c="789" ></my-component> ``` 无论使用哪种写法,父组件传递的props都会被传递到子组件中,子组件就可以使用它们了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值