如何在父事件上调用子组件上的函数

JavaScript

Tony宝儿

2020-03-09

语境

在Vue 2.0中,文档和其他文档清楚地表明,父母与孩子之间的交流是通过道具进行的。

父母如何通过道具告诉孩子发生了什么事?

我应该只看一个叫做活动的道具吗?这感觉不对,也没有其他选择($emit/ $on代表孩子到父母,而集线器模型代表远处的元素)。

我有一个父容器,它需要告诉其子容器可以在API上执行某些操作。我需要能够触发功能。

第366篇《如何在父事件上调用子组件上的函数》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
猴子逆天 2020.03.09

您可以使用mixin设置共享数据属性。在父级中对其进行更改,在子级中对其进行监视:

// mixin
export default {
  data() {
    return  {
      clicked: false
    }
  }
}

// parent
export default {
  mixins: [myMixin],
  methods: {
    btnClick() {
      this.clicked = true
    }
  }
}

// child
export default {
  mixins: [myMixin],
  watch: {
    clicked(val) {
      if(val) {
        // yay
      }
    }
  }
}
乐米亚 2020.03.09

我认为我们应该考虑父母使用孩子方法的必要性。实际上,父母不必关心孩子的方法,而是可以将孩子组件视为FSA(有限状态机)。来控制子组件的状态。因此,观察状态变化或仅使用计算功能的解决方案就足够了

ItachiGreen 2020.03.09

如果有时间,请使用Vuex存储库监视变量(即状态)或直接触发(即调度)操作。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android