当前位置: 首页 > news >正文

网站设计创意方案合肥百度关键词推广

网站设计创意方案,合肥百度关键词推广,靠谱的网站制作公司,wordpress 源码剖析title: 组件通信 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端组件通信 目标:重点学习父子组件与兄弟组件的通信方式,以及插槽的作用与使用方式 父子组件通信 主要是通过props和自定义事件来实现 1.1 父 -> 子通信(通过 …
title: 组件通信
date: 2025-01-28 12:00:00
tags:- 前端
categories:- 前端

组件通信

目标:重点学习父子组件与兄弟组件的通信方式,以及插槽的作用与使用方式

父子组件通信

主要是通过props和自定义事件来实现

1.1 父 -> 子通信(通过 Props)

父组件通过 props 将数据传递给子组件。

父组件

<template><ChildComponent :message="parentMessage" />
</template>
​
<script setup>
import ChildComponent from './ChildComponent.vue'
const parentMessage = "Hello from Parent"
</script>

子组件

<template><p>{{ message }}</p>
</template>
​
<script setup>
defineProps(['message'])
</script>

• 父组件通过 :message 将数据传递给子组件。

子组件使用 defineProps 接收父组件传递的 message。

1.2 子 -> 父通信(通过自定义事件)

子组件通过 $emit 触发事件,将数据发送给父组件。

父组件--

<template><ChildComponent @sendMessage="receiveMessage" /><p>父组件收到的消息:{{ message }}</p>
</template>
​
<script setup>
import ChildComponent from './ChildComponent.vue'
import { ref } from 'vue'
​
const message = ref('')
function receiveMessage(data) {message.value = data
}
</script>

子组件--

<template><button @click="sendToParent">发送消息给父组件</button>
</template>
​
<script setup>
import { ref } from 'vue'
​
const childMessage = ref('Hello from Child')
function sendToParent() {// 触发自定义事件,传递数据emit('sendMessage', childMessage.value)
}
defineEmits(['sendMessage'])
</script>

作用

• 子组件通过 $emit 向父组件发送消息。

• 父组件通过 @sendMessage 监听子组件的事件,并处理接收到的数据。

2. 兄弟组件通信

兄弟组件之间的通信不能直接进行,需要通过 状态管理工具(如 Pinia、Vuex)事件总线

2.1 使用 Pinia(推荐方式)

Pinia 是 Vue 3 中推荐的状态管理工具。

定义一个store

// stores/messageStore.js
import { defineStore } from 'pinia'
​
export const useMessageStore = defineStore('messageStore', {state: () => ({message: ''}),actions: {setMessage(newMessage) {this.message = newMessage}}
})

兄弟组件 A(发送数据)

<template><button @click="sendMessage">发送消息</button>
</template>
​
<script setup>
import { useMessageStore } from '@/stores/messageStore'
​
const messageStore = useMessageStore()
​
function sendMessage() {messageStore.setMessage('Hello from Component A')
}
</script>

兄弟组件 B(接收数据)

<template><p>接收到的消息:{{ message }}</p>
</template>
​
<script setup>
import { useMessageStore } from '@/stores/messageStore'
​
const messageStore = useMessageStore()
const message = computed(() => messageStore.message)
</script>

使用 Pinia Store 作为共享状态,兄弟组件可以方便地访问和更新数据。

3. 插槽(Slots)

插槽是 Vue 中的一种机制,用于实现父组件向子组件传递 HTML 结构或动态内容。

3.1 基础插槽

父组件向子组件插入内容。

子组件

<template><div class="box"><slot></slot> <!-- 占位符 --></div>
</template>
​
<script setup></script>
​
<style>
.box {padding: 10px;border: 1px solid black;
}
</style>

父组件

<template><ChildComponent><p>这是插槽内容</p></ChildComponent>
</template><script setup>
import ChildComponent from './ChildComponent.vue'
</script>

父组件通过 <slot 将自定义内容插入到子组件中。

3.2 具名插槽

可以通过命名插槽向子组件的不同部分插入内容。

子组件

<template><header><slot name="header"></slot></header><main><slot></slot></main><footer><slot name="footer"></slot></footer>
</template>

父组件

<template><ChildComponent><template #header><h1>这是头部内容</h1></template><p>这是默认插槽内容</p><template #footer><p>这是底部内容</p></template></ChildComponent>
</template>

3.3 作用域插槽

子组件将数据传递给插槽内容,父组件可以根据这些数据动态渲染内容。

<template><div><slot :data="message"></slot></div>
</template><script setup>
const message = "这是子组件的数据"
</script>
<template><ChildComponent><template #default="{ data }"><p>父组件接收到的数据:{{ data }}</p></template></ChildComponent>
</template><script setup>
import ChildComponent from './ChildComponent.vue'
</script>

子组件通过 slot 的 props 将数据传递给父组件。

• 父组件可以动态展示这些数据。

http://www.hrbkazy.com/news/10296.html

相关文章:

  • 余姚公司做网站360推广助手
  • 带财运的公司名字青岛seo服务哪家好
  • 免费网站建设翻译深圳网站关键词优化公司
  • 做网站找模版好吗西安网站推广助理
  • 揭阳企业网页制作公司郑州关键词seo
  • 怎样用网站做淘宝推广百度百家号官网
  • 做外贸如何选择网站微信社群营销怎么做
  • 北京建委官网站免费b站推广短视频
  • 怎么做国际购物网站百度搜索资源平台
  • 自动采集的网站痘痘怎么去除有效果
  • 网店装修网站西安关键字优化哪家好
  • 只做健康产品的网站网络营销与直播电商学什么
  • 网站建设周期展示型网站设计公司
  • ps网站轮播图怎么做seo每日工作
  • 主流网站 技术百度竞价推广运营
  • 潍坊哪个网站建设公司好seo搜索引擎优化工程师招聘
  • 做网站购买服务器吗推广网站的方法
  • 做网站 java 怎么样济南疫情最新情况
  • 做外挂 开网站网络营销优秀案例
  • 定西建设厅网站扬州seo博客
  • 网站默认首页文件顺序正在播网球比赛直播
  • 网络做网站有域名了怎么建立网站
  • 做网站有什么不好自媒体人专用网站
  • 如何选择网站开发语言百度云盘网官网
  • 珠海营销型网站建设公司怎么弄一个自己的链接
  • 北京网站推广服务如何开通自己的网站
  • 西安网站开发huanxi市场调研报告范文模板word
  • 山西网站制作公司哪家好成都全网推广哪家专业
  • 做网站 教程在线crm软件
  • 如何做ppt的模板下载网站网站宣传文案范例