Vue組件之間傳值

接收和發(fā)送的方法都是在子組建模板標(biāo)簽內(nèi)寫
比如:
<child :parentMsg='pMsg'></child>
<child @child-event='getFromChild'></child>

1、父組件向子組件傳值:

//先聲明一個父組件

var parent = {
  template: "<h1>我是局部父組件{{pMsg}}<child :parentMsg='pMsg'></child></h1>",//父組件通過子組件標(biāo)簽<child></child>綁定:parentMsg='需要傳遞的數(shù)據(jù)'
  data() {
    return {
      pMsg: 33
    };
  },
  components: {
    Child: child
  }
};

//再聲明一個子組件(注意實際聲明位置是在父組件之前,為了演示方便寫在父組件之后)

var child = { 
  template: "<h3>我是局部子組件{{parentMsg}}</h3>",
  props:['parentMsg'],  //子組件<child></child>標(biāo)簽內(nèi)的數(shù)據(jù)通過props從父組件接收數(shù)據(jù)
  data() {
    return {
      cMsg: 34
    };
  }
};

//最后,把父組件放到根元素內(nèi)(每個組件必須只有一個根元素)

export default {
  name: "App",
  data: () => {
    return {};
  },
  components: {
    Parent: parent
  }
};

2、子組件向父組件傳值:

  • 子組件通過事件傳遞,父組件通過事件接收
    • 子組件:this.$emit('父組件接收的事件方法名',傳遞的數(shù)據(jù))
  • 流程:
    • 子組件把$emit綁定到事件(click)上 => 點擊子組件=> 父組件內(nèi)的子組件模板<child>進(jìn)行接收(注意此處接收依然是子模板,與父模板無關(guān))
//子組件:

var child = {
  template: "<button @click='emitToParent'>我是局部子組件</button>",
  data() {
    return {
      cMsg: 34
    };
  },
  methods: {
    emitToParent:function() {
      this.$emit("child-event", "我是子組件傳上來的數(shù)據(jù)");
    }
  }
};

//父組件:

var parent = {
  template:
    "<div>我是局部父組件{{pMsg}}<child @child-event='getFromChild'></child></div>", //注意此時接收還是在child模板內(nèi)接收
  data() {
    return {
      pMsg: 3
    };
  },
  components: {
    Child: child
  },
  methods: {
    getFromChild:function(data) {
      this.pMsg = data
    }
  }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容