vuejs父子组件之间数据交互详解

父子组件之间的数据交互遵循:

props down - 子组件通过props接受父组件的数据 events up - 父组件监听子组件$emit的事件来操作数据

示例

子组件的点击事件函数中$emit自定义事件

rush:js;"> export default { name: 'comment',props: ['issue','index'],data () { return { comment: '',} },components: {},methods: { removeComment: function(index,cindex) { this.$emit('removeComment',{index:index,cindex:cindex}); },saveComment: function(index) { this.$emit('saveComment',{index: index,comment: this.comment}); this.comment=""; } },//hook created: function () { //get init data

}

}

父组件监听事件

代码如下:

父组件的methods中定义了事件处理程序

rush:js;"> removeComment: function(data) { var index = data.index,cindex = data.cindex; var issue = this.issue_list[index]; var comment = issue.comments[cindex]; axios.get('comment/delete/cid/'+comment.cid) .then(function (resp) { issue.comments.splice(cindex,1); }); },saveComment: function(data) { var index = data.index; var comment = data.comment; var that = this; var issue =that.issue_list[index]; var data = { iid: issue.issue_id,content: comment };

axios.post('comment/save/',data)
.then(function (resp) {
issue.comments=issue.comments||[];
issue.comments.push({
cid: resp.data,content: comment
});
});

//clear comment input
this.comment="";
}

},

注意参数的传递是一个对象

其实还有更多的场景需要组件间通信

官方推荐的通信方式

  • 首选使用Vuex
  • 使用事件总线:eventBus,允许组件自由交流
  • 具体可见:nofollow" target="_blank" href="https://cn.vuejs.org/v2/guide/migration.html#dispatch-和-broadcast-替换">$dispatch 和 $broadcast替换

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

这篇文章我们将通过debug源码的方式来带你搞清楚defineAsync...
欧阳老老实实的更新自己的高质量vue源码文章,还被某2.6k st...
前言 在Vue3.5版本中响应式 Props 解构终于正式转正了,这个...
组合式 (Composition) API 的一大特点是“非常灵活”,但也因...
相信你最近应该看到了不少介绍Vue Vine的文章,这篇文章我们...
前言 在欧阳的上一篇 这应该是全网最详细的Vue3.5版本解读文...