Vue 子组件调用父组件值

父组件传递值对象

<template>
  <ul class="todo-main">
    //父组件定义传递参数 todo 和 deleteTodo
    <TodoItem v-for="(todo, index) in todos" :key="index"
              :todo="todo" :deleteTodo="deleteTodo" :index="index"/>
  </ul>
</template>

<script>
  import TodoItem from './TodoItem.vue'
  export default {
    // 声明接收标签属性
    props: ['todos', 'deleteTodo'], // 会成为当前组件对象的属性, 可以在模板中直接访问, 也可以通过this来访问

    components: {
      TodoItem
    }
  }
</script>

子组件接收参数

<template>
  <li :style="{background: bgColor}" @mouseenter="handleEnter(true)" @mouseleave="handleEnter(false)">
    <label>
      <input type="checkbox" v-model="todo.complete"/>
      <span>{{todo.title}}</span>
    </label>
    <button class="btn btn-danger" v-show="isShow" @click="deleteItem">删除</button>
  </li>
</template>

<script>
  export default {
    //接收父组件传递参数,key要一致
    props: {// 指定属性名和属性值的类型
      todo: Object,
      deleteTodo: Function,
      index: Number
    },

props: 可以是数组或对象,用于接收来自父组件的数据。props 可以是简单的数组,或者使用对象作为替代,对象允许配置高级选项,如类型检测、自定义验证和设置默认值

type:可以是下列原生构造函数中的一种:String、Number、Boolean、Array、Object、Date、Function、Symbol、任何自定义构造函数、或上述内容组成的数组。会检查一个 prop 是否是给定的类型,否则抛出警告

default:any 为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回

required:Boolean 定义该 prop 是否是必填项。在非生产环境中,如果这个值为 truthy 且该 prop 没有被传入的,则一个控制台警告将会被抛出

validator:Function 自定义验证函数会将该 prop 的值作为唯一的参数代入。在非生产环境下,如果该函数返回一个 falsy 的值 (也就是验证失败),一个控制台警告将会被抛出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中,组件可以通过事件来调用组件。具体的做法是: 1. 在组件中定义一个方法,作为组件调用时的响应。例如,我们在组件中定义一个名为 `handleChildClick` 的方法。 2. 在组件中,通过 `$emit` 方法触发一个自定义事件,并传递需要传递给组件的数据作为参数。例如,当组件中的某个按钮被点击时,我们可以通过 `$emit('child-click', data)` 触发一个名为 `child-click` 的事件,并传递数据 `data`。 3. 在组件使用组件时,可以通过在组件上绑定事件监听器来响应组件触发的事件。例如,可以在组件模板中使用 `<child-component @child-click="handleChildClick"></child-component>` 来监听组件触发的 `child-click` 事件,并调用 `handleChildClick` 方法进行处理。 以下是一个简单的示例代码: ```vue <template> <div> <button @click="handleChildClick">点击组件按钮</button> <child-component @child-click="handleChildClick"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent, }, methods: { handleChildClick(data) { console.log('组件点击事件触发', data); // 组件组件触发的事件进行处理 }, }, }; </script> ``` 在组件 `ChildComponent` 中,可以使用 `$emit` 方法触发 `child-click` 事件: ```vue <template> <div> <button @click="emitChildClick">点击触发组件事件</button> </div> </template> <script> export default { methods: { emitChildClick() { const data = '组件传递给组件的数据'; this.$emit('child-click', data); }, }, }; </script> ``` 这样,当组件中的按钮被点击时,组件的 `handleChildClick` 方法将被调用,并且传递的数据会作为参数传递给该方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值