javascript - 组件中的 Vuejs 挂载钩子未按预期工作
问题描述
我在组件中使用挂载的钩子,并希望在仪表板视图上加载图表,如下所示。
仪表板脚本
export default {
name: 'Dashboard',
mounted() {
console.log(this.$el); //--> console output -> empty
const self = this;
this.$nextTick(function () {
// some init codes for chart implementation
console.log(self.$el); //--> console output -> empty also.
}
}
}
我有一个 App.vue 文件用作容器。它具有默认的模板结构(我的意思是没有什么特别的)。如何理解组件加载?
我认为; 加载mounted()
时触发钩子。App.vue
但此时仍未创建仪表板组件 DOM。所以我决定使用nextTick
事件。但它也像mounted()
钩子一样。我有点困惑。
编辑:这个问题是F5
在键盘上按下按钮时引起的。
编辑 2:App.vue
<template>
<section id="app" class="container-fluid">
<div class="content">
<router-view />
</div>
</section>
</template>
路由器.js
import Vue from 'vue'
import Router from 'vue-router'
import Dashboard from './views/Dashboard.vue'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{ path: '/', component: Dashboard }
]
})
解决方案
this
nextTick 函数中的不是 Vue 组件。您可以尝试使用箭头功能
this.$nextTick(() => {
// some init codes for chart implementation
console.log(this.$el);
}
或关闭:
var self = this
this.$nextTick(() => {
// some init codes for chart implementation
console.log(self.$el);
}
推荐阅读
- linux - 匹配模式时,Bash 中的逻辑操作无法按预期工作
- javascript - Javascript 在循环一次之前导致 for-loop 开始时崩溃
- javascript - 来自另一个模块的 Angular 动态组件
- node.js - Unix xxd -r -p 命令 NodeJS 等效
- xaml - 显示 XAML 子元素的辅助功能文本
- node.js - 如何在 Sequelize 的“findByPk”语句中同时使用“include”和“attributes”?
- java - 接口类允许静态成员方法到实例成员方法重新声明,但类类或接口接口不允许
- git-extensions - 如何滚动到 GitExtensions 中的当前提交?
- flutter - Flutter Web:TextOverflow.ellipsis 不适用于自定义字体和 rtl 语言
- python - Pythonanywhere 等待