この記事では、Vue で一般的に使用されるコンポーネント通信方法について詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
通信を確立する基本モード: 親コンポーネントと子コンポーネント間の関係は、props が下方に渡され、イベントが上方に渡されると要約できます。親コンポーネントは props を通じて子コンポーネントにデータを送信し、子コンポーネントはイベントを通じて親コンポーネントにメッセージを送信します。
コンポーネント通信の 3 つの一般的な方法
parent.vue
<template> <p> <parent-child :childName="childName"></parent-child> </p> </template> <script> import child from "./child" export default { components: { "parent-child" : child },data(){ return { childName : "我是child哦" } } } </script>
child.vue
<template> <p id="child"> child的名字叫:{{childName}}<br> </p> </template> <script> export default { props:{ childName :{ type:String, default: "" } } } </script>
parent.vue
<template> <p> <parent-child :childName="childName" @childNotify="childReceive"></parent-child> </p> </template> <script> import child from "./child" export default { components: { "parent-child" : child },data(){ return { childName : "我是child哦" } },methods:{ childReceive(params){ this.$message(params) } } } </script>
child.vue
<template> <p id="child"> child的名字叫:{{childName}}<br> </p> </template> <script> export default { props:{ childName :{ type:String, default: "" } },methods:{ childNotify(params){ this.$emit("childNotify","child的名字叫"+this.childName); } } } </script>
bus.js
const install = (Vue) => { const Bus = new Vue({ methods: { on (event, ...args) { this.$on(event, ...args); }, emit (event, callback) { this.$emit(event, callback); }, off (event, callback) { this.$off(event, callback); } } }) Vue.prototype.$bus = Bus; } export default install;
main.js
import Bus from "./assets/js/bus"; Vue.use(Bus);
child.vue
<template> <p id="child"> child的名字叫:{{childName}}<br> <el-button type="primary" @click="brotherNotity">向child2打招呼</el-button> </p> </template> <script> export default { props:{ childName :{ type:String, default: "" } },methods:{ childNotify(params){ this.$emit("childNotify","child的名字叫"+this.childName); }, brotherNotity(){ this.$bus.$emit("child2","child2你好呀"); } } } </script>
child2.vue
<template> <p id="child2"> child2的名字叫:{{child2Name}} </p> </template> <script> export default { props:{ child2Name :{ type:String, default: "" } }, created(){ this.$bus.$on("child2",function(params){ this.$message(params) }) }, beforeDestroy() { this.$bus.$off("child2",function(){ this.$message("child2-bus销毁") }) } } </script>
推奨学習: vue.js チュートリアル
以上がVue で一般的に使用されるコンポーネント通信方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。