想要给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本身。。
问题在于log方法里面。