javascript - 如何从组件内部获取 Vue 组件的实例

标签 javascript vue.js ecmascript-6

如何从我的 SectionComponent.vue 文件中获取我导入的组件的实例?

import ButtonComponent from './ButtonComponent.vue'; 

要获取它的一个实例,我想做这样的事情:

buttonComponent = Vue.component(ButtonComponent);

我在我的组件数组中列出/定义了我的组件作为 ButtonComponent 所以理论上我应该能够说:

let buttonComponent = Vue.component('button-component'); 

但这给了我不确定性。给了什么?

如果我全局注册它然后获取一个实例,它确实有效。

mounted 不是测试此代码的正确位置吗?我的安装方法在导入之前被触发了吗?我只是想在这里弄清楚一点,如果有人能解释一下,我将不胜感激!

最佳答案

Vue 是一个声明式框架,这意味着您并不是真正地命令式地做事。相反,您将模板表述为状态的表示,然后 Vue 会为您处理 DOM 操作。

这是一个基于您所描述的您想要执行的操作的示例。

console.clear()
Vue.component("button-component", {
  // identifier is just a property telling us which button this is so we 
  // can distinguish between them
  props:["identifier"],
  template: `<button @click="onClick">I'm button {{identifier}}</button>`,
  methods: {
    onClick() {alert(this.identifier)}
  }
})

new Vue({
  el: "#app",
  data:{
    howManyButtons: 0
  },
  methods: {
    onAddButton(){
      this.howManyButtons++
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.min.js"></script>

<div id="app">
  <button @click="onAddButton">Add a button component</button>
  <hr>
  <button-component v-for="btn in howManyButtons"
                    :identifier="btn"
                    :key="btn">
  </button-component>
</div>

在上面的示例中,我们希望根据“添加按钮”按钮被点击的次数来呈现多个按钮。为此,我们只需在单击按钮时增加一个计数器。然后在模板中我们使用 range variant v-for 来渲染那么多按钮。

<button-component v-for="btn in howManyButtons"
                  :identifier="btn"
                  :key="btn">
</button-component>

希望这可以清楚地表明我们告诉 Vue 向 DOM 添加按钮是没有意义的。我们只是在模板中描述我们想要的按钮数量与我们柜台中的按钮数量一样多。

关于javascript - 如何从组件内部获取 Vue 组件的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49534958/

相关文章:

javascript - 如何在react中点击div后禁用点击事件?

javascript - 更改父项的 Prop 后,不会重新渲染 React 子项组件

javascript - knockout foreach $parent 表示祖 parent 而不是 parent

vue.js - 将@contextmenu 事件与 vuetify v-data-table 一起使用

javascript - 如何删除类中的事件监听器?

javascript - 我应该将哪些 Babel 转换器列入 Chrome 应用程序的黑名单?

javascript - 如何正确分配 jQuery 事件处理程序?

vue.js - 错误 : You cannot call "get" on a collection with no paths. 相反,首先检查 "length"属性以验证至少存在 1 个路径

javascript - Vue.js:使用带有 v-for 的对象进行双向数据绑定(bind)

javascript - 如果 bool 值在没有 $watch 的情况下发生变化,是否可以将 bool 值传递给指令并触发某些内容?