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

语境

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

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

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

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

猴子逆天2020/03/09 23:37:47

您可以使用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 23:37:47

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

ItachiGreen2020/03/09 23:37:47

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