Vue组件内的方法如何添加装饰器Decorator
想要给Vue组件内的某方法增加Decorator,发现并不能很好支持。
<template>
<div id="app">
<img src="./assets/logo.png" @click="foo">
<hello></hello>
</div>
</template>
<script>
import Hello from './components/Hello'
import Vue from 'vue'
import Component from 'vue-class-component'
const log = (target, name, descriptor) => {
const method = descriptor.value
descriptor.value = (...args) => {
console.log(target, descriptor)
method.apply(target, args)
}
return descriptor
}
@Component({
components: {
Hello
}
})
class App extends Vue {
str = 'Hello'
@log
foo () {
console.log(this.str)
}
}
console.info('App', App)
export default App
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
foo添加装饰器log之后,this不能正确的指向Component本身。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题在于log方法里面。
稍微改造一下就好了,针对vue实例做一下适配