VUE 父子組件的傳遞 props、$ref 、 $emit、$parent、$children、$root


原網站的網址:https://blog.csdn.net/alokka/article/details/87104189   非常詳細的版本

看到別人的網頁寫的比較詳細,就拿過來了。留着以后自己備用  哈哈哈

網頁;https://blog.csdn.net/twodogya/article/details/80715049

一.父向子傳遞參數    繼承的方式

     1.1 【父組件把(原始類型)傳給子組件   :傳遞\prop接收】      繼承的方式

    父組件:<child   :childtraccept='fathertransform' ></childd>   

    子組件:prop:[ '','','']接收         

  1.2 【父組件把(方法)傳給子組件          :傳遞\prop接收】     繼承的方式

    父組件把方法傳遞到子組件里面,子組件調用     問題:父組件如果有多個方法怎么辦?

    父組件:<child :fatherMethod='fatherMethod'></child>   

    子組件:props:{

     fatherMethod: {

      type: Function,

      default: null }

       },

      methods:{

       childClick(){ this.fatherMethod() }

       }

  1.3 【父組件拿到子組件所有的值     $refs】  

    // ref 作用在組件上 指向的是組件的實例 實例上的方法都可以調用

    父組件:<child ref='child'></child>   

    父組件: console.log(this.$refs.child.msg)    或者  this.$refs.child.do()  

  1.3 【父組件拿到子組件所有的值    $children[0]

    // $children獲取的是子組件的數組 通過索引找到對應的子組件的實例

    父組件:<child></child> 正常 引入 掛載  子組件        

      父組件:console.log(this.$children[0].msg)    或者  this.$children[0].childClick()   

     子組件:childClick(){

          this.$children.fatherMethod()

          console.log(this.$children.msg)

           }

二.子組件t向父傳遞參數,$emit有兩種方式,

  2.1,【子組件把(原始類型)傳給父組件  注意:函數+$emit傳遞\函數+data接收】  帶參數傳遞

    子組件 :this.$emit('tell',this.msg)               // 必須以函數的形式,向父組件派發事件+參數

     父組件:<child @tell='know'></child>    know(msg) { alert(msg); }     // // 父組件中 在子組件上監聽子組件派發的tell方法 然后調用函數 就能調用子組件的原始數據

    帶參數傳遞,參數是(子組件內容) -->要傳遞給父組件@接收內容->(父組件函數接收(data){ }data代表子組件的內容)   

  2.2,【子組件傳把(方法)傳到父組件,注意:函數+$emit傳遞\函數接收】  不帶參數傳遞

    子組件:this.$emit('tell')       // 函數+$emit傳遞  向父組件派發事件

    父組件:<child @tell='know'></child>      // 父組件中 在子組件上監聽子組件派發的tell方法 然后調用函數 就能調用子組件的方法

     know(msg) { alert(msg); }

    不帶參數傳遞,可以直接調用父組件函數(父組件函數接收)ChildClick(){  this.父組件函數()}    :                         

  2.3 【子組件獲取所有父組件值   $parent】   

    組件通過$parent獲取父組件的數據和方法   

    父組件:<child></child正常 引入 掛載  子組件

    子組件:childClick(){

       this.$parent.fatherMethod()

      console.log(this.$parent.msg)

     } 

 

注意:$root 和 $parent 都能夠實現訪問父組件的屬性和方法,兩者的區別在於,如果存在多級子組件,通過parent 訪問得到的是它最近一級的父組件,通過root 訪問得到的是根父組件(App.vue) 所以存在組件嵌套的情況下 不要使用 $root 

 父子傳參:

 

                               


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM