先是按照官方文档进行升级操作。
项目采用vue全家桶、webpack、typeScript、compositionApi。
在升级后的项目中使用compositionApi语法,开始采用getCurrentInstance来获取router,在结构getCurrentInstance时,会报如下错误:
这是因为getCurrentInstance可能为null,一直想找方案解决这个问题,但一直没有找到好的方案。后面采用曲线救国,找方法来替换。
vue-router 3.6.4 可以使用useRouter:
import { useRouter } from 'vue-router/composables';
const $router = useRouter();
$router.push({ name: 'app' });
Vuex采用的直接导入来使用:
import store from '@/store';
store.dispatch('user/info');
对于element-ui的form表单验证:
import { Form } from 'element-ui';
import { getCurrentInstance } from 'vue';
const instance = getCurrentInstance();
(instance?.proxy.$refs.formRef as Form).validate((valid) => {
// code….
})