vue.js - 扩展 Vue 生命周期钩子
问题描述
我有一个特殊的应用程序,我想在安装每个组件时对其运行一个方法。所以我可以将方法作为全局混合或其他东西,然后简单地做..
mounted(){
this.mySpecialMethod();
}
但是,我想知道是否可以简单地扩展 Vues 挂载钩子,以便在挂载时始终在每个组件上运行该方法。我无法在这方面的信息中找到。
解决方案
如果你真的想让所有东西都调用你的mounted
钩子,你可以使用全局mixin。
下面,我们有一个 mixin myMixin
,它会在每次挂载或销毁某些东西时记录到控制台。运行示例时,您可以看到每次单击加号按钮时,它都会运行组件的mounted
钩子以及 mixin 的钩子。
如果您想扩展它以便它可以作为库重用,您可以从中创建一个插件。
const foo = {
template: "<div @click='onClick'>hello</div>",
mounted() {
console.log("Foo's mounted");
},
methods: {
onClick() {
console.log("click");
}
}
}
const myMixin = {
mounted() {
console.log("I've been mounted");
},
destroyed() {
console.log("I've been destroyed");
}
};
Vue.mixin(myMixin);
const app = new Vue({
el: "#app",
data() {
return {
foos: []
};
},
components: {
foo
},
methods: {
add() {
this.foos.push("fizz");
},
remove() {
this.foos.pop();
}
}
});
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
<button @click="add()">+</button><button @click="remove()">-</button>
<ul>
<li v-for="f in foos">
<foo></foo>
</ul>
</div>
推荐阅读
- .net-core - CentOS 上 Bamboo 中的 .Net Core SFTP 集成测试
- javascript - Javascript React:按下按钮时按钮不执行功能
- c++ - 如何解决 UndefinedBehaviorSanitizer 错误?
- c# - 如何在 C# 中将嵌套的 foreach 循环转换为 LINQ 查询
- c++ - 如何为动画关键帧添加权重
- swift - 如何告诉 Swift 使用像素或点?
- c# - 如何将具有另一种复杂对象类型的属性的对象序列化为 XML / SOAP?我不断收到无效的文档结构
- angular - 如何扩展 PrimeNG DropDown 的标签区域?
- perl - 如何有条件地合并一行的最后 2 个字符?
- scala - Spark Dataframe - 编码器