您的位置:首页 > 新闻 > 资讯 > 武汉网页设计高级培训学校_喜茶品牌策划全案案例_seo方案怎么做_网络营销工程师是做什么的

武汉网页设计高级培训学校_喜茶品牌策划全案案例_seo方案怎么做_网络营销工程师是做什么的

2025/2/24 5:18:18 来源:https://blog.csdn.net/qq_48701993/article/details/145640736  浏览:    关键词:武汉网页设计高级培训学校_喜茶品牌策划全案案例_seo方案怎么做_网络营销工程师是做什么的
武汉网页设计高级培训学校_喜茶品牌策划全案案例_seo方案怎么做_网络营销工程师是做什么的

目录

  • 【props】
  • 【$emit】
  • 【Event Bus】
  • 【provide和inject】
  • 【Vuex】

【props】

父组件通过props向子组件传递数据;

<!-- 父组件 -->
<template><ChildComponent :message="parentMessage" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {components: { ChildComponent },data() {return {parentMessage: 'Hello from Parent',};},
};
</script><!-- 子组件 -->
<template><div>{{ message }}</div>
</template>
<script>
export default {props: ['message'],
};
</script>

【$emit】

子组件通过$emit触发事件,父组件监听事件并处理数据;

<!-- 子组件 -->
<template><button @click="sendMessage">Send Message</button>
</template>
<script>
export default {methods: {sendMessage() {this.$emit('message-from-child', 'Hello from Child');},},
};
</script><!-- 父组件 -->
<template><ChildComponent @message-from-child="handleMessage" />
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {components: { ChildComponent },methods: {handleMessage(message) {console.log(message); // 输出: Hello from Child},},
};
</script>

【Event Bus】

创建一个全局事件总线,兄弟组件通过事件总线通信;

// eventBus.js
import Vue from 'vue';
export const EventBus = new Vue();// 组件 A
EventBus.$emit('message', 'Hello from A');// 组件 B
EventBus.$on('message', (message) => {console.log(message); // 输出: Hello from A
});

【provide和inject】

祖先组件通过 provide 提供数据,后代组件通过 inject 注入数据;

// 祖先组件
export default {provide() {return {message: 'Hello from Ancestor',};},
};// 后代组件
export default {inject: ['message'],
};

【Vuex】

Vuex 是 Vue 2 的官方状态管理工具;

// store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({state: { message: 'Hello from Vuex' },mutations: {setMessage(state, message) {state.message = message;},},
});// 组件
export default {computed: {message() {return this.$store.state.message;},},methods: {updateMessage() {this.$store.commit('setMessage', 'New Message');},},
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com