路由之間傳參的方法(vue通訊)

孫廣益是水瓶座i發表於2020-12-06

1.父傳子

父元件中的字標籤上 v-bind:定義名稱="自定義傳遞資料名"
子元件用props:{} 接收,接收是可以接收定義型別

2.子傳父

子元件中繫結一個事件(如點選)這個事件中this.$emit("自定義事件名")這個是向父傳的值
父元件取值:子標籤上 v-on父元件中自定義的事件名=“函式名($event)”

3.$emit$on中央事件匯流排

通過一個空的vue例項,做中央事件匯流排
用他來觸發事件和監聽事件

var Event=new Vue()
Event.$emit("事件名",資料)
Event.$on("事件名",data=>{})

4.vuex

單向資料流:全域性有一個state存放資料
更改資料通過mutation
statemutationgettersActionsModules
vuex結合localstoragesessionStorage使用,重新整理後從快取中取

5.只傳遞資料,不操作化,不改變值用$attrs,$listeners

注意:$attrs當一個元件沒有宣告任何props

v-baind="$attrs"

配合inheritAttrs來使用
簡單來說$attrs$listeners是兩個物件
$attrs裡面存放的是父元件中繫結的非props屬性
$listeners裡存放的是父元件繫結的非原生事件

父元件demo程式碼如下

<template>
   <div>
     <child-dom
      :foo="foo"
      :coo="foo"
     >
     </child-dom>
   </div>
</template>
<script>
   import childDom from "./ChildDom.vue";
   export default {
     data() {
        return {
          foo:"Hello, world",
          coo:"Hello,rui"
        }
     },
     components:{childDom},
   }
</script>

子元件child-dom程式碼如下

<template>
   <div>
      <p>foo:{{foo}}</p>
   </div>
</template>
<script>
export default {
 name:'child-dom'
 props:["foo"]
}
</script>

6.$parent,$childrenref

無法跨級,但父元件可以呼叫子元件中的方法
父元件中的子元件標籤上<ref="a">
父元件中

 mounted(){
 	const a=this.$refs.a
 }

子中:

a.函式名();

相關文章