Nuxt3-跳转页面首屏空白,需要刷新问题

问题描述

在nuxt3项目中 使用<NuxtLink to=" " />标签跳转之后,页面第一次都是空白,需要刷新之后才展示页面内容。
pages目录和跳转页面代码如下:

 

<template>
  <div class="index-list">
    <NuxtLink class="item" :id="index==0?'first':''" v-for="(item,index) in itemList" :key="index" :to="item.path">
      <img :src="item.icon">
      <div>{{ item.name }}</div>
    </NuxtLink>
  </div>
</template>

<script lang="ts" setup>
const data = reactive({
  itemList: [
    {icon: 'static/hsb.png', name: '页面1', path: '/program/tallage'},
    {icon: 'static/htb.png', name: '页面2', path: '/program/general'},
    {icon: 'static/zsd.png', name: '页面3', path: '/program/standard'},
    {icon: 'static/hzd.png', name: '页面4', path: '/program/remit'},
  ]
})
const {itemList} = toRefs(data);
</script>

原因分析:

第一次接触nuxt3,感觉是<NuxtLink/>标签的问题,有缓存? 

反正问题所在无非是页面没有重新加载,换个思路,改来改去,终于  在我把<NuxtLink />标签换成a标签之后 问题解决了。


解决方案:

代码如下:

<template>
  <div class="index-list">
    <a class="item" :id="index==0?'first':''" v-for="(item,index) in itemList" :key="index" :href="item.path">
      <img :src="item.icon">
      <div>{{ item.name }}</div>
    </a>
  </div>
</template>

<script lang="ts" setup>
const data = reactive({
  itemList: [
    {icon: 'static/hsb.png', name: '页面1', path: '/program/tallage'},
    {icon: 'static/htb.png', name: '页面2', path: '/program/general'},
    {icon: 'static/zsd.png', name: '页面3', path: '/program/standard'},
    {icon: 'static/hzd.png', name: '页面4', path: '/program/remit'},
  ]
})
const {itemList} = toRefs(data);
</script>

最后得出问题所在应该是<NuxtLink />标签没有刷新页面,<a /> 的原理是从一个页面链接到另一个页面,是会刷新页面的。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Nuxt.js中,可以使用`<nuxt-link>`来实现带参数的跳转。具体的写法是在`<nuxt-link>`标签的`to`属性中使用`params`来传递参数。例如: ```html <nuxt-link :to="{ name: 'products', params: { keyword: item.name }}">{{ item.name }}</nuxt-link> ``` 这样就可以将`item.name`作为`keyword`参数传递给名为`products`的路由页面。 接受参数的方法有两种: 1. 在`asyncData(ctx)`方法中获取参数。可以使用`ctx.params.keyword`来获取通过参数传递的值。例如: ```javascript async asyncData(ctx) { console.log(ctx.params.keyword) // 可以获取到通过参数传递的值 } ``` 2. 在`created()`生命周期中获取参数。可以使用`this.$route.params.keyword`来获取通过参数传递的值。例如: ```javascript created() { console.log(this.$route.params.keyword) // 可以获取到通过参数传递的值 } ``` 需要注意的是,`<nuxt-link>`的使用方式与`<router-link>`相同,所以在接受参数方面也可以参考`<router-link>`的用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nuxt:nuxt-link的动态路由和传参](https://blog.csdn.net/weixin_45844049/article/details/105581675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值