Vue3.x+element-plus+ts踩坑笔记( 二 )

subMenu.vue
解决方案一:修改 main.ts
import { createApp } from 'vue'import App from './App.vue'import router from './router'import store from './store'import ElementPlus from 'element-plus'import 'element-plus/es/components/button/style/css'import * as Icons from '@element-plus/icons-vue'const app = createApp(App)Object.keys(Icons).forEach(key => {app.component(key, Icons[key as keyof typeof Icons])})app.use(store)app.use(router)app.use(ElementPlus)app.mount('#app')解决方案二:将 main.ts 改回原来的
import { createApp } from 'vue'import App from './App.vue'import router from './router'import store from './store'createApp(App).use(store).use(router).mount('#app')//公共cssimport './assets/css/index.scss'将subMenu.vue组件的 js 代码改为
import { defineComponent } from "vue";import {Document,Menu as IconMenu,Location,Setting,Menu,Grid,} from "@element-plus/icons-vue";import { useRouter } from "vue-router";import { useStore } from "vuex";export default defineComponent({components: {Document,Menu,Location,Setting,Grid,},props: {menuInfo: {type: Object,default: () => {return {id: "",parent_id: "",m_name: "",icon: "",childs: [],};},},},setup() {//路由const router = useRouter();//vuexconst store = useStore();const menuFun = (event: any, index: string) => {setNav(event);store.dispatch("setMenuActive", { menuActive: index });if (event.url && event.url.length > 0) {router.push({path: event.url,query: {},});}};const setNav = (item: any) => {store.dispatch("setNav", { nav: item });};return {menuFun,};},});</script>参考哪里忘记了,第一种是面向百度的,第二种是小颖自己试出来的
来来来找到了,参考这里;vue3 动态加载el-icon图标
3.vuex页面刷新数据丢失问题的四种解决方式解决方案:第一步:执行以下代码
npm install --save vuex-persist第二步:在 store 下的 index.ts 中引入并使用
import VuexPersistence from "vuex-persist";//解决页面刷新vuex数据丢失const vuexLocal = new VuexPersistence({storage: window.localStorage})export default createStore({state: {},getters: {},mutations: {},actions: {},modules: modules,plugins: [vuexLocal.plugin]})更多方法参考:vuex页面刷新数据丢失问题的四种解决方式
4.如何自动引入  store  下指定目录下的所有文件 , 此方法也适用于引入组件比如小颖要实现在 store 下的 index.ts 中自动引入 store  下的 modules 中的所有 ts

Vue3.x+element-plus+ts踩坑笔记

文章插图
解决方案:将 index.ts 改为:
import { createStore } from 'vuex'import VuexPersistence from "vuex-persist";//解决页面刷新vuex数据丢失const modulesFiles = require.context('./modules', false, /\.ts$/)// you do not need `import app from './modules/app'`// it will auto require all vuex module from modules fileconst modules = modulesFiles.keys().reduce((modules: any, modulePath) => {// set './app.js' => 'app'const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')const value = https://www.huyubaike.com/biancheng/modulesFiles(modulePath)modules[moduleName] = value.defaultreturn modules}, {})const vuexLocal = new VuexPersistence({storage: window.localStorage})export default createStore({state: {},getters: {},mutations: {},actions: {},modules: modules,plugins: [vuexLocal.plugin]})后面的坑等后面写了再继续补充,最近小颖在忙着弄接的私活所以也没继续看vue3了,等这段时间忙完继续搞,打工人···················

推荐阅读