父子组件传递参数/默认插槽/具名插槽

news/2024/7/24 3:43:18 标签: java, 前端, 服务器

父子组件传递参数 

在 uni-app 中,自定义组件之间可以通过 props 和事件的方式进行参数传递。下面我将详细说明父子组件之间相互传递参数的方法:

  1. 父组件向子组件传递参数(使用 props):
    • 在子组件的 vue 文件中,通过 props 字段定义需要接收的参数。
    • 在父组件使用子组件的地方,通过绑定属性的方式将数据传递给子组件。

子组件示例代码(Child.vue):

<template>
  <div>
    <h2>{{ title }}</h2>
    <p>{{ content }}</p>
  </div>
</template>

<script>
export default {
  props: {
    title: {
      type: String,
      required: true
    },
    content: {
      type: String,
      default: ''
    }
  }
}
</script>

 父组件示例代码(Parent.vue):

<template>
  <div>
    <child-component :title="title" :content="content"></child-component>
  </div>
</template>

<script>
import ChildComponent from '@/components/Child.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      title: '标题',
      content: '内容'
    }
  }
}
</script>

  1. 子组件向父组件传递参数(使用事件):
    • 在子组件中通过 $emit 方法触发一个自定义事件,并将需要传递的数据作为参数传入。
    • 在父组件中监听子组件触发的自定义事件,并在相应的方法中获取传递的参数。

子组件示例代码(Child.vue):

<template>
  <button @click="handleClick">点击触发事件</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      const data = '这是子组件传递的数据';
      this.$emit('child-event', data);
    }
  }
}
</script>

 父组件示例代码(Parent.vue):

<template>
  <div>
    <child-component @child-event="handleChildEvent"></child-component>
    <p>接收子组件传递参数:{{ childData }}</p>
  </div>
</template>

<script>
import ChildComponent from '@/components/Child.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      childData: ''
    }
  },
  methods: {
    handleChildEvent(data) {
      this.childData = data;
    }
  }
}
</script>

 通过上述方法,父组件和子组件就可以相互传递参数。父组件通过 props 将数据传递给子组件,子组件通过事件将数据传递给父组件,实现了双向的参数传递。

默认插槽 

在 uni-app 中,插槽(slot)是一种用于在组件内部插入内容的机制。通过插槽,我们可以将外部传入的内容动态地插入到组件的指定位置。uni-app 支持两种类型的插槽:默认插槽和具名插槽。

  1. 默认插槽:

默认插槽是最基本的插槽类型,它允许在组件中插入任意内容。在组件的模板中使用 <slot></slot> 标签来表示默认插槽的位置。

组件示例代码(Child.vue):

<template>
  <div>
    <h2>我是子组件</h2>
    <slot></slot>
  </div>
</template>

<script>
export default {
}
</script>

 父组件示例代码(Parent.vue):

template>
  <div>
    <child-component>
      <p>这是插入到子组件的内容</p>
    </child-component>
  </div>
</template>

<script>
import ChildComponent from '@/components/Child.vue';

export default {
  components: {
    ChildComponent
  }
}
</script>

 在上述示例中,我们在父组件中使用了 <child-component> 标签,并在其中插入了一个 <p> 标签。这个 <p> 标签就会被动态地插入到子组件的默认插槽位置。

 

具名插槽

具名插槽允许我们在组件中定义多个插槽,并可以根据需要将内容插入到指定的插槽中。在组件的模板中使用 <slot name="插槽名称"></slot> 标签来表示具名插槽的位置。

组件示例代码(Child.vue):

 

<template>
  <div>
    <h2>我是子组件</h2>
    <slot name="content"></slot>
    <slot name="footer"></slot>
  </div>
</template>

<script>
export default {
}
</script>

 父组件示例代码(Parent.vue):

<template>
  <div>
    <child-component>
      <template v-slot:content>
        <p>这是插入到内容插槽的内容</p>
      </template>
      <template v-slot:footer>
        <button>提交</button>
      </template>
    </child-component>
  </div>
</template>

<script>
import ChildComponent from '@/components/Child.vue';

export default {
  components: {
    ChildComponent
  }
}
</script>

 

在上述示例中,我们在子组件中定义了两个具名插槽:contentfooter。在父组件中,我们使用了 <template> 标签,并通过 v-slot 指令来选择需要插入的具名插槽。在 v-slot 中,我们使用 :name 的形式指定要插入的插槽名称。

通过使用插槽,我们可以在组件中灵活地插入外部的内容,实现更高度的组件复用和定制。默认插槽和具名插槽的使用方式略有差异,但都能满足不同场景下的需求。

 


http://www.niftyadmin.cn/n/5102344.html

相关文章

C语言--冒泡排序和简答选择排序

冒泡排序 一种典型的交换排序 类似水冒泡&#xff0c;大元素经不断的交换由水底慢慢的浮出 从头到尾&#xff0c;循环比较两相邻的元素 大的元素移到后面&#xff0c;小的放前面-每次循环&#xff0c;大的元素会排到最后 代码如下&#xff1a; #include<stdio.h> …

QT_day2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

HandlerInterceptorAdapter、RequestInterceptor、Interceptor不同拦截器的区别

在Spring Boot和Spring Cloud中&#xff0c;HandlerInterceptorAdapter、RequestInterceptor和Interceptor是用于拦截和处理HTTP请求的组件。它们的执行顺序和功能有一些区别。 1. HandlerInterceptorAdapter&#xff1a; - HandlerInterceptorAdapter是Spring MVC框架中…

音频录制和处理软件 Audio Hijack mac中文版说明

Audio Hijack mac是一款功能强大的音频录制和处理软件&#xff0c;它可以帮助用户从各种来源捕获和处理音频。 首先&#xff0c;Audio Hijack具有灵活的音频捕获功能。它支持从多个来源录制音频&#xff0c;包括麦克风、应用程序、网络流媒体、硬件设备等等。你可以选择捕获整个…

云计算系统与传统计算系统的比较

随着技术的不断发展&#xff0c;云计算系统逐渐成为了企业和个人使用的主要计算方式之一。然而&#xff0c;很多人对云计算系统与传统计算系统之间的区别和相似之处还存在一些疑惑。本文将以云计算系统和传统计算系统为方向&#xff0c;探讨它们之间的异同点。 首先&#xff0…

MSQL系列(五) Mysql实战-索引最左侧匹配原则分析及实战

Mysql实战-索引最左侧匹配原则分析及实战 前面我们讲解了索引的存储结构&#xff0c;BTree的索引结构&#xff0c;以及索引最左侧匹配原则&#xff0c;Explain的用法&#xff0c;今天我们来实战一下 最左侧匹配原则 1.联合索引最左侧匹配原则 联合索引有一个最左侧匹配原则 …

【LeetCode】40. 组合总和 II

1 问题 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: candidates [10,…

adb 操作命令(adb调试QT项目使用到的命令)

1.adb连接串口 获取root权限 adb root && adb remount && adb shell2.测试串口命令 stty -F /dev/ttyS4 cs8 -parenb -cstopb -echoecho "12345\n" > /dev/ttyS8cat /dev/ttyS4 &3.软件在安卓系统上的名字已经活动名称&#xff08;下面是示…