VUE3页面不能正常显示的可能解决办法

使用<img>标签时页面中出现如下报错

对应的标签代码如下:

 <div
              v-for="(banner, index) in carouselData"
              :key="index"
              @click="gotoDetail(banner.goodsId)"
              class="carousel-item-wrapper"
            >
              <img :src="require(banner.image)" class="carousel-img" />
              <div class="goods-title">{{ banner.title }}</div>
</div>

 上述代码中,banner在后端接收到的数据是正常的,但不能正常显示。经过查找资料发现,require括号中的内容如果是动态变量会导致Webpack 在构建阶段无法解析,从而导致运行时找不到该模块,解决方法如下:

<img
                :src="require(`@/assets/${banner.image}`)"
                class="carousel-img"
              />

将img中的:src中的内容改为静态目录拼接动态文件名的形式可以正常加载。

Vue 3 刷新页面显示的问题可能有多种情况,以下是不同问题对应的解决办法: - **路由切换后刷新页面正常显示但切换时白屏**:正常使用时切换路由可正常切换页面,但长时间无操作会出现问题,导航切换路由时地址栏有变化但页面显示,且控制台无报错、各级页面有根标签节点包裹。解决办法是在 `router-view` 中给路由添加 `key` 标识。若使用 `layout` 封装布局,需在 `layout` 下的主页面中的 `router-view` 添加标识,而非在 `src` 根目录下 `main.vue` 中修改(在该文件修改会造成每次切换路由导航标签都会收起)。示例代码如下: ```vue <script setup lang="ts"> import { useTagsViewStore } from "@/store/modules/tagsView"; import { useRoute} from "vue-router"; const tagsViewStore = useTagsViewStore(); const route = useRoute(); const key = computed(() => { return route.path + Math.random(); }); </script> <template> <section class="app-main"> <router-view v-slot="{ Component, route }" :key="key"> <transition name="router-fade" mode="out-in"> <keep-alive :include="tagsViewStore.cachedViews"> <component :is="Component" :key="route.fullPath" /> </keep-alive> </transition> </router-view> </section> </template> ``` 若项目使用 `layout` 封装布局,要在 `layout` 文件夹下的主页面的 `router-view` 上加 `key`,如 `src\layout\components\AppMain.vue`,在 `src\App.vue` 中添加会影响整个应用范围内的路由组件,导致导航栏关闭再打开,而在 `layout` 下的主页面添加 `key` 只会影响其内部包含的组件,不会影响外部导航栏等组件 [^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值