一、 背景
- 搭配 <script setup> 使用组合式 API 比等价情况下的选项式 API 更高效,对代码压缩也更友好。这是由于 <script setup> 形式书写的组件模板被编译为了一个内联函数,和 <script setup> 中的代码位于同一作用域。
- 不像选项式 API 需要依赖 this 上下文对象访问属性,被编译的模板可以直接访问 <script setup> 中定义的变量,无需一个代码实例从中代理。
二、问题描述
关于view-ui-plug中,对于一些指令,组件的使用,是使用this进行调用的,例如,Message
success () {
this.$Message.success('This is a success tip');
},
warning () {
this.$Message.warning('This is a warning tip');
},
error () {
this.$Message.error('This is an error tip');
}
结果在组合式api中,特别是单组件文件中:
<script setup>
import {Message} from 'view-ui-plus'//需要一个一个引入
//报错调用
this.$Message.info('获取验证码');
//可行调用
Message.info('获取验证码');
</script>
以上问题,通过import引入,虽然能解决问题,但是用一个调用一个,很麻烦,有没有方便的使用方法呢?
精益编程leanboot当然不会让人失望…
三、解决方案
<script setup>
const { proxy } = getCurrentInstance();
proxy.$Message.info('获取验证码');
</script>
procy 就是相对于原来的this的使用,可以收就是vue的对象引用