vite hmr

状态保存

const initHmr = function(app: App) {
  const env = getEnv();
  if (env.env !== "dev") {
    return;
  }
  app.mixin({
    created() {
      if (import.meta.hot) {
        const componentId = this.$options.__hmrId;
        if (!this.$options.__file?.includes("src/views/sale/bill/automobile/index.vue")) {
          return;
        }
        if (!componentId) {
          return;
        }
        console.log(this);
        // 恢复状态
        if (import.meta.hot.data[componentId]) {
          Object.assign(this.$data, import.meta.hot.data[componentId]);
          console.log(this.$data);
        }

        // 保存状态
        import.meta.hot.dispose((data) => {
        });
      }
    }
  });
};

获取Proxy的setup变量

image

auto import

import autoImport from "unplugin-auto-import/vite";

export default function createAutoImport (){
  return autoImport({
    imports: [
      "vue",
      "vue-router",
      "pinia",
      {
        "@/hmr/use-hmr-persist": [
          ["useHmrPersist", "hmr"] // 使用短名称
        ]
      }
    ],
    dts: false
  });
}

posted @ 2025-04-11 15:17  fight139  阅读(12)  评论(0)    收藏  举报