{"id":8460,"date":"2023-11-28T20:28:38","date_gmt":"2023-11-28T12:28:38","guid":{"rendered":"https:\/\/wx.kaifamiao.info\/?p=8460"},"modified":"2023-12-02T22:51:53","modified_gmt":"2023-12-02T14:51:53","slug":"vue-zhongvue-zu-jian-de-tong-xin-fu-zi-zu-jian-he","status":"publish","type":"post","link":"http:\/\/wx.kaifamiao.info\/index.php\/2023\/11\/28\/vue-zhongvue-zu-jian-de-tong-xin-fu-zi-zu-jian-he\/","title":{"rendered":"Vue \u4e2d vue \u7ec4\u4ef6\u7684\u901a\u4fe1\uff08\u7236\u5b50\u7ec4\u4ef6\u548c\u975e\u7236\u5b50\u7ec4\u4ef6\uff09\uff1f"},"content":{"rendered":"<p>Vue \u4e2d\u7ec4\u4ef6\u4e4b\u95f4\u7684\u901a\u4fe1\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u5b9e\u73b0\uff0c\u5305\u62ec\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1\u548c\u975e\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1\u3002<\/p>\n<h3><a id=\"%E7%88%B6%E5%AD%90%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1<\/h3>\n<ol>\n<li>\n<p><strong>Props\/\u5c5e\u6027\u4f20\u9012<\/strong>\uff1a\u7236\u7ec4\u4ef6\u901a\u8fc7 props \u5411\u5b50\u7ec4\u4ef6\u4f20\u9012\u6570\u636e\u3002<\/p>\n<pre><code class=\"language-vue\">&lt;!-- ParentComponent.vue --&gt;\n&lt;template&gt;\n  &lt;ChildComponent :message=&quot;parentMessage&quot; \/&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport ChildComponent from '.\/ChildComponent.vue';\n\nexport default {\n  data() {\n    return {\n      parentMessage: 'Hello from parent!',\n    };\n  },\n  components: {\n    ChildComponent,\n  },\n};\n&lt;\/script&gt;\n\n&lt;!-- ChildComponent.vue --&gt;\n&lt;template&gt;\n  &lt;div&gt;{{ message }}&lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  props: ['message'],\n};\n&lt;\/script&gt;\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Events\/\u4e8b\u4ef6\u89e6\u53d1<\/strong>\uff1a\u5b50\u7ec4\u4ef6\u901a\u8fc7\u89e6\u53d1\u4e8b\u4ef6\u5411\u7236\u7ec4\u4ef6\u4f20\u9012\u4fe1\u606f\u3002<\/p>\n<pre><code class=\"language-vue\">&lt;!-- ChildComponent.vue --&gt;\n&lt;template&gt;\n  &lt;button @click=&quot;sendMessage&quot;&gt;Send Message&lt;\/button&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  methods: {\n    sendMessage() {\n      this.$emit('message-sent', 'Hello from child!');\n    },\n  },\n};\n&lt;\/script&gt;\n\n&lt;!-- ParentComponent.vue --&gt;\n&lt;template&gt;\n  &lt;ChildComponent @message-sent=&quot;handleMessage&quot; \/&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport ChildComponent from '.\/ChildComponent.vue';\n\nexport default {\n  methods: {\n    handleMessage(message) {\n      console.log(message); \/\/ 'Hello from child!'\n    },\n  },\n  components: {\n    ChildComponent,\n  },\n};\n&lt;\/script&gt;\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3><a id=\"%E9%9D%9E%E7%88%B6%E5%AD%90%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u975e\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1<\/h3>\n<ol>\n<li>\n<p><strong>Event Bus\/\u4e8b\u4ef6\u603b\u7ebf<\/strong>\uff1a\u521b\u5efa\u4e00\u4e2a\u4e8b\u4ef6\u603b\u7ebf\u6765\u5728\u4e0d\u540c\u7ec4\u4ef6\u4e4b\u95f4\u4f20\u9012\u4e8b\u4ef6\u3002<\/p>\n<pre><code class=\"language-javascript\">\/\/ event-bus.js\nimport Vue from 'vue';\nexport const EventBus = new Vue();\n<\/code><\/pre>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre><code class=\"language-vue\">\/\/ SenderComponent.vue\n&lt;script&gt;\nimport { EventBus } from '.\/event-bus.js';\n\nexport default {\n  methods: {\n    sendMessage() {\n      EventBus.<span class=\"katex math inline\">emit('message-received', 'Hello from sender!');\n    },\n  },\n};\n&lt;\/script&gt;\n\n\/\/ ReceiverComponent.vue\n&lt;script&gt;\nimport { EventBus } from '.\/event-bus.js';\n\nexport default {\n  created() {\n    EventBus.<\/span>on('message-received', message =&gt; {\n      console.log(message); \/\/ 'Hello from sender!'\n    });\n  },\n};\n&lt;\/script&gt;\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Vuex<\/strong>\uff1a\u7528\u4e8e\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\u7684\u72b6\u6001\uff0c\u5e76\u5728\u4efb\u4f55\u7ec4\u4ef6\u4e4b\u95f4\u5171\u4eab\u6570\u636e\u3002<\/p>\n<pre><code class=\"language-javascript\">\/\/ store.js\nimport Vue from 'vue';\nimport Vuex from 'vuex';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n  state: {\n    message: 'Hello from Vuex!',\n  },\n  mutations: {\n    updateMessage(state, newMessage) {\n      state.message = newMessage;\n    },\n  },\n});\n<\/code><\/pre>\n<p>\u4f7f\u7528\uff1a<\/p>\n<pre><code class=\"language-vue\">\/\/ SenderComponent.vue\n&lt;script&gt;\nexport default {\n  methods: {\n    sendMessage() {\n      this.<span class=\"katex math inline\">store.commit('updateMessage', 'Hello from sender!');\n    },\n  },\n};\n&lt;\/script&gt;\n\n\/\/ ReceiverComponent.vue\n&lt;script&gt;\nexport default {\n  computed: {\n    message() {\n      return this.<\/span>store.state.message;\n    },\n  },\n};\n&lt;\/script&gt;\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u8fd9\u4e9b\u662f\u5728 Vue \u4e2d\u5b9e\u73b0\u7236\u5b50\u7ec4\u4ef6\u548c\u975e\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1\u7684\u5e38\u89c1\u65b9\u6cd5\uff0c\u9009\u62e9\u9002\u5408\u4f60\u5e94\u7528\u7a0b\u5e8f\u7ed3\u6784\u548c\u9700\u6c42\u7684\u65b9\u6cd5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vue \u4e2d\u7ec4\u4ef6\u4e4b\u95f4\u7684\u901a\u4fe1\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u5b9e\u73b0\uff0c\u5305\u62ec\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1\u548c\u975e\u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1\u3002 \u7236\u5b50\u7ec4\u4ef6\u901a\u4fe1 Props\/\u5c5e [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[114],"tags":[],"class_list":["post-8460","post","type-post","status-publish","format-standard","hentry","category-vue"],"_links":{"self":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/8460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/comments?post=8460"}],"version-history":[{"count":2,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/8460\/revisions"}],"predecessor-version":[{"id":14116,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/8460\/revisions\/14116"}],"wp:attachment":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/media?parent=8460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/categories?post=8460"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/tags?post=8460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}