vue でさまざまな状況でコミュニケーションするにはどうすればよいですか?次の記事では、vue におけるさまざまな状況におけるコミュニケーション方法を分析します。
実際、vue でのコンポーネント通信については誰もがよく知っています。口を開いても結局面接でよく聞かれるのがこれです。今までじっくり考えたことがなかったので、小さなプロジェクトを書いているときに、コンポーネントでの通信が必要なことに気づき、書き始めたところ、それは無駄だったことがわかり、ずっとチェックしていて気づきました。その方法はこの状況には適していないということです。この出来事を受けて、コミュニケーション方法をより明確かつ慎重に分類する記事を書くことにしました 結局のところ、すべてのコミュニケーション方法がすべてのシナリオに適しているわけではありません。 (学習ビデオ共有: vuejs チュートリアル)
同じブラウザの同じページタブで主に行われるのは、親コンポーネントと子コンポーネント間の値の転送です。
あなたはおそらくステート マネージャーの概念を知らないでしょう。 。
このペア オプションは、コンポーネント階層の深さに関係なく、上流と下流の関係が確立されている限り、祖先コンポーネントがそのすべての子孫に依存関係を注入できるようにするために一緒に使用する必要があります。
provide
および inject
バインディングは応答しません。ただし、リッスン可能なオブジェクトを渡しても、オブジェクトのプロパティは引き続き応答します。 // parent.vue // 此处忽略template模板的东西 <script> export default { name: 'parent', // provide有两种写法 // 第一种 provide: { a: 1, b: 2 } // 第二种 provide() { return { a: 1, b: 2 } } } </script>
// child.vue // 此处忽略template模板的东西 <script> export default { name: 'child', // inject // 第一种 inject: [ 'a', 'b' ] // 第二种 inject: { abc: { // 可以指定任意不与data,props冲突的变量名,然后指定是指向provide中的哪个变量 from: 'a', default: 'sfd' // 如果默认值不是基本数据类型,那就得改用:default: () => {a:1,b:2} }, b: { default: '33' } } } </script>
Serious props/$emit はあまりにも一般的であり、すべて過剰に使用されているため、サンプル コードを記述する必要はありません。
問題:
// utils/eventBus.js import Vue from 'vue' const EventBus = new Vue() export default EventBus
// main.js // 进行全局挂载 import eventBus from '@/utils/eventBus' Vue.prototype.$eventBos = eventBus
// views/parent.vue <template> <div> <button @click="test">测试</button> </div> </template> <script> export default { data() { return {} }, methods: { test() { this.$eventBus.$emit('testBus', 'test') } } }
// views/child.vue <template> <div> {{ testContent }} <!-- test --> </div> </template> <script> export default { data() { return { testContent: '' } }, mounted() { this.$eventBus.$on('test', e => this.testContent = e) } }
prop
がない場合、サブコンポーネント内の最も外側のラベルに自動的に設定されます (# の場合)。 ##class と
style の場合、最も外側のタグ
class と
style がマージされます。
属性を継承したくない場合は、
inheritAttrs を使用して継承を無効にしてから、
v-bind="$ attrs" は、外部から渡された非
prop 属性を目的のタグに設定しますが、これによって
class と
は変更されません。 style
例: これは親コンポーネントですこれは dom 表示です:
.native
修饰器的) v-on
事件监听器。它可以通过 v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用示例:这是父组件
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
不同浏览器的同一网站的有通讯的必要吗?
如果有那就:websocket(比如聊天室)
哈哈哈哈
以上がvue でさまざまな状況でコミュニケーションするにはどうすればよいですか?共有する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。