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

中国法院网站群建设杭州网站推广平台

中国法院网站群建设,杭州网站推广平台,做加盟代理的网站,江苏网站建设价格在 Vue 中&#xff0c;组件之间的传值方式主要包括以下几种情况&#xff1a; 1. 父组件向子组件传值&#xff08;props&#xff09; 父组件通过 props 传递数据给子组件&#xff1a; <!-- Parent.vue --> <template><ChildComponent :msg"message"…

在 Vue 中,组件之间的传值方式主要包括以下几种情况:

1. 父组件向子组件传值(props

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

<!-- Parent.vue -->
<template><ChildComponent :msg="message" />
</template><script>
import ChildComponent from './ChildComponent.vue';
export default {components: { ChildComponent },data() {return {message: 'Hello from Parent!'};}
};
</script>
<!-- ChildComponent.vue -->
<template><p>Received message: {{ msg }}</p>
</template><script>
export default {props: {msg: String}
};
</script>

2. 子组件向父组件传值($emit

子组件通过 this.$emit 触发事件,父组件监听事件并获取值:

<!-- Parent.vue -->
<template><ChildComponent @update-message="handleMessage" /><p>Message from Child: {{ receivedMessage }}</p>
</template><script>
import ChildComponent from './ChildComponent.vue';
export default {components: { ChildComponent },data() {return {receivedMessage: ''};},methods: {handleMessage(msg) {this.receivedMessage = msg;}}
};
</script>
<!-- ChildComponent.vue -->
<template><button @click="sendMessage">Send to Parent</button>
</template><script>
export default {methods: {sendMessage() {this.$emit('update-message', 'Hello from Child!');}}
};
</script>

3. 兄弟组件传值(Event BusPinia/Vuex

兄弟组件需要一个中间桥梁,比如 Event Bus(Vue 3 不推荐)或 Pinia(推荐):

// eventBus.js (Vue 2 可用,Vue 3 推荐使用 Pinia)
import Vue from 'vue';
export const EventBus = new Vue();

BrotherA.vue 发送数据:

<template><button @click="sendMessage">Send to BrotherB</button>
</template><script>
import { EventBus } from './eventBus.js';
export default {methods: {sendMessage() {EventBus.$emit('message', 'Hello from BrotherA!');}}
};
</script>

BrotherB.vue 接收数据:

<template><p>{{ receivedMessage }}</p>
</template><script>
import { EventBus } from './eventBus.js';
export default {data() {return { receivedMessage: '' };},created() {EventBus.$on('message', msg => {this.receivedMessage = msg;});}
};
</script>

4. ref 方式(获取子组件实例)

父组件可以通过 ref 获取子组件实例并访问其方法或数据:

<!-- Parent.vue -->
<template><ChildComponent ref="childRef" /><button @click="callChildMethod">Call Child Method</button>
</template><script>
import ChildComponent from './ChildComponent.vue';
export default {components: { ChildComponent },methods: {callChildMethod() {this.$refs.childRef.childMethod();}}
};
</script>
<!-- ChildComponent.vue -->
<template><p>Child Component</p>
</template><script>
export default {methods: {childMethod() {console.log('Child method called!');}}
};
</script>

5. provideinject(适用于祖孙组件)

适用于跨层级组件通信:

<!-- GrandParent.vue -->
<template><Parent />
</template><script>
import Parent from './Parent.vue';
export default {components: { Parent },provide() {return { sharedMessage: 'Hello from GrandParent!' };}
};
</script>
<!-- Parent.vue -->
<template><Child />
</template><script>
import Child from './Child.vue';
export default {components: { Child }
};
</script>
<!-- Child.vue -->
<template><p>{{ sharedMessage }}</p>
</template><script>
export default {inject: ['sharedMessage']
};
</script>

6. Vuex 或 Pinia(全局状态管理)

适用于复杂状态管理,如 Vuex(Vue 2)或 Pinia(Vue 3):

// store.js (使用 Pinia)
import { defineStore } from 'pinia';export const useMainStore = defineStore('main', {state: () => ({message: 'Hello from Store'}),actions: {setMessage(newMsg) {this.message = newMsg;}}
});

ComponentA.vue 更新数据:

<template><button @click="updateMessage">Update Message</button>
</template><script>
import { useMainStore } from './store.js';
export default {setup() {const store = useMainStore();const updateMessage = () => store.setMessage('Updated Message!');return { updateMessage };}
};
</script>

ComponentB.vue 读取数据:

<template><p>{{ store.message }}</p>
</template><script>
import { useMainStore } from './store.js';
export default {setup() {const store = useMainStore();return { store };}
};
</script>

http://www.dtcms.com/wzjs/319175.html

相关文章:

  • 政府网站建设不合格网络推广哪家好
  • 设计一个网站需要多久最有效的宣传方式
  • 手机网站自助建设网页设计与制作书籍
  • 做网站图片素材在线编辑培训心得体会范文
  • php做学校网站免费百度广告关键词价格表
  • 网站下载的网页修改下面版权所有天津百度推广中心
  • 网站怎么做优化排名万网官网入口
  • iis怎么做网站空间无锡百度推广公司哪家好
  • WordPress突然全站404必应搜索引擎入口官网
  • 用vue框架做的网站seo的定义
  • 广西做网站公司有哪些站长统计入口
  • 达川区建设局局网站最新实时大数据
  • 网站建设到上线开网店
  • 长沙企业网站建设优度广告平台网
  • 音乐网站制作教程步骤北京网站建设公司大全
  • 做单页网站要多少钱老鬼seo
  • 淄博网站制作定制推广西安百度关键词包年
  • 做任务挣钱的网站聚常州网站建设制作
  • 山东一建建设有限公司网站首页永久免费的电销外呼系统
  • 漳平网站建设sem是什么工作
  • 网站建设加盟创业百度竞价排名是什么方式
  • 专业婚纱摄影网站制作百度投放广告怎么收费
  • 如何给网站做提升网站网络营销公司
  • 网站做直播需要办理什么证软文推广什么意思
  • 腾讯企点聊天记录迁移厦门seo哪家强
  • 北京宏福建设有限公司网站营销活动有哪些
  • 有模板怎么做网站山东服务好的seo公司
  • 找段子的各大网站微商怎么引流被别人加
  • 产品列表型网站模板东莞seo外包平台
  • 鞍山市城乡建设委员会网站免费cms建站系统