sinat_26497661 2024-09-03 23:40 采纳率: 0%
浏览 9

nuxt3里面 ,跳转page页面动态路服务端页面刷新问题

在nuxt3里面 组件动态跳转page目录下页面的问题,动态路由传参,在服务器跳转一直刷新页面返回首页。

文章列表页面:components/layout/Articlelist.vue,位于components的layout目录下
前台内容: 。

在nuxt3里面 我这样写的根据文章id跳转详情页面:articledetails.vue,位于 page目录下面。

在本地电脑测试没问题的,地址如下:http://localhost:3000/articledetails?index=1 他是可以跳到文章详情页面的。(传递文章id时没问题的)
但是当我打包部署到服务器(宝塔)时候点击文章列表的文章跳转文章详情页面时(http://域名/articledetails?index=1 ),他直接就刷新页面回到首页了 ,这个是怎么回事呢?
我在文章列表页面里面已经指向跳转了::to="{path:'/articledetails',query:{index:article.id}},难道在组件里面跳转到page下面的页面 需要什么设置么?我看介绍nuxt里面都是自动注册路由的,怎么一放到服务器就不行了捏~
谁帮我分析看看 如何解决呢?怎么才能搞定这个动态路由跳在服务端不起作用导致页面刷新的问题~

img

page目录下的详情页面:

img

有没有人指点一下,怎么解决这个动态路由跳转在服务器端 页面一直刷新的问题。

  • 写回答

2条回答 默认 最新

  • 吃不了席 2024-09-03 23:41
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题是由于Nuxt3在开发模式下默认会自动创建路由,并且不会在生产环境中自动注册新的路由。在生产环境下,你需要手动将你的组件注册为路由。

    首先,你需要确保你的pages目录下有一个名为articles.js的文件,用于处理路由逻辑:

    export default {
      path: '/articles',
      name: 'Articles',
      component: ArticlesPage,
    };
    

    然后,你需要在你的articles.js文件中编写一个函数来处理路由。例如,你可以这样做:

    import { defineComponent } from "vue";
    
    export default defineComponent({
      // 在这里写你的组件定义
    });
    

    接下来,你需要修改你的Articlelist.vue组件以适配动态路由。你可以使用nuxt-link组件来实现这个功能。例如,你可以这样修改你的Articlelist.vue组件:

    <template>
      <nuxt-link
        to="/articledetails"
        :key="item.article_id"
        v-for="(item, i) in articles"
        :query="{
          index: item.article_id,
        }"
      >
        {{ item.title }}
      </nuxt-link>
    </template>
    
    <script setup lang="ts">
    import { useRoute } from "vue-router";
    import { onBeforeMount } from "vue";
    
    const route = useRoute();
    
    const articles = ref([]);
    
    async function fetchArticles() {
      const response = await fetch("/api/articles");
      const data = await response.json();
      articles.value = data;
    }
    </script>
    

    在这个例子中,我们使用nuxt-link组件来实现动态路由。to属性指定要跳转的目标路径,而:query属性包含一个包含index键值对的对象,其中index就是我们要传递给articledetails.vue组件的参数。

    另外,我们需要在Articlelist.vue组件中添加一些额外的逻辑来处理动态路由,例如更新状态、刷新页面等。这可能包括使用v-ifv-show元素来控制组件的状态,以及使用router.push()方法来刷新页面。

    此外,为了使你的组件能够正确地工作,你还需要在你的articledetails.vue组件中引用Articlelist.vue组件。例如:

    <template>
      <article v-if="isArticleVisible">
        <nuxt-link :to="{name: 'Articlelist', params: {index: article.id}}" tag="span">
          <img src="{{ article.cover }}" alt="">
        </nuxt-link>
        <article-list :articles="articles"></article-list>
      </article>
    </template>
    
    <script setup lang="ts">
    import { useRoute } from "vue-router";
    
    const route = useRoute();
    
    const articles = ref([]);
    </script>
    

    通过以上步骤,你应该能够在服务器上正确地跳转到文章详情页面并保持页面不刷新。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?