当前位置: 首页 > 知识库问答 >
问题:

带数据提取的动画路由切换,Vue

许照
2023-03-14

我正在使用Vue、Vuex和Vue路由器。有一个路由器链接元素列表。单击时,路由器视图区域中的组件应切换为动画,并且路由url应更改。换句话说,旧组件应该完全消失,然后向服务器请求新组件的数据,然后新组件顺利出现。但事实并非如此。单击路由器链接后,新路由的数据将快速加载,新组件将平滑消失,然后平滑显示。

一个新组件消失了,我做错了什么?我在beforeRouteEnter和beforeRouteUpdate挂钩中请求数据。

教训ist.vue

<template>
  <section>
    <ul>
      <router-link 
          v-for="(lesson,index) in lessons"
          v-bind:key="index"
          :to="{
             name: 'lesson',
             params: {
               id: index+1
             }
           }"
           tag="li"
      >
        <h2>№{{index+1}}</h2>
      </router-link>
    </ul>
    <transition name="slide" mode="out-in" appear>
            <router-view :key="$route.path"></router-view>
    </transition>
  </section>

课程vue

import {store} from '../../vuex/store'
    
beforeRouteEnter(to, from, next) {
  let sendData = {};
  sendData.lessonNumber = Number(to.params.id);
  sendData.userId = store.getters['login/userId'];
  store.dispatch('lesson/changeCurrentLesson', sendData).then(()=> next());
  //dispatch action to vuex for data fetching
},
beforeRouteUpdate(to, from, next){
  let sendData = {};
  sendData.lessonNumber = Number(to.params.id);
  sendData.userId = store.getters['login/userId'];
  store.dispatch('lesson/changeCurrentLesson', sendData).then(()=> next());
}

共有1个答案

南宫俊喆
2023-03-14

单击路由器链接后,新路由的数据将快速加载,新组件将平滑消失,然后平滑显示。

我猜这是因为您使用的是单一状态,当您导航到新路由(相同路由不同参数)时,我们调用currentLesson,然后beforeRouteUpdate将在旧组件上触发,然后更新currentLesson,这样您将看到新组件似乎消失了。然后,真正的新组件将以相同的currentLesson显示。

示例

因此,您可以通过使用带有自己的键或数字的教训对象来解决这个问题。或者,您可以使用创建的钩子或挂载的钩子,我认为如果您需要在加载API之前显示一些内容,这会更好。

示例

 类似资料:
  • 基于spring集成的转换器使用来自一个系统的消息,检查、转换并将其发送到另一个系统。 如果目标系统关闭,我们将停止入站适配器,但也希望在本地保留或转发当前“正在运行”的转换消息。为此,只需将消息从正常输出通道动态地重新路由到某个“备份”通道。 在文档中,我只找到了根据消息头路由消息的选项(因此,在流程之前的某个步骤中,一旦targer系统不可用,我将不得不动态添加这些消息),或者基于有效负载类型

  • 下面是我的实现,需要遍历一级路由。最终实现了不管有多少级路由,都能“记住”,各位有什么更好的方法?个人心得就是用vue如果要把用户体验搞上去,好需要硬功底

  • 我有一条基本路线,如下所示: 逻辑是我希望仅为数值。我现在要做的是,如果值是非数字的,则声明对此的重定向。假设的输入是。在这种情况下,我希望它重定向到值为的。 我尝试使用,但无法正常工作。它看起来像这样: 我更愿意将重定向放在组内,但如果这是唯一的方法,它可以放在组外。任何帮助都将不胜感激。 发生的情况是,如果我声明了路由重定向,就会出现404错误。 编辑:我想在文件。我知道如何在控制器中执行此操

  • 问题内容: 对不起,我的英语不好。我为AbstractRoutingDataSource编写了实现: 我创建了用于在数据库之间进行切换的新类: 其中DatabaseType为: 在我的beans.xml中: 现在,当我尝试更改DAO中的数据源时: 首次执行getJdbcTemplate()时,一次调用一次defineCurrentLookupKey(),并且数据源不会切换。 问题答案: Sprin

  • Vue 提供了多种方式支持动画过渡效果。例如在各个过渡阶段应用 CSS 类,提供钩子函数使用 JS 操作 DOM,使用第三方 CSS/JS 动画库等。 如果对 Vue 中内置的 transition 机制还不了解,可以阅读 官方的介绍。 在模板项目中,主要使用了最简单的应用 CSS 类的方式完成动画效果。 具体实现 在模板项目中,页面切换时,会有左右滑动效果。 具体表现为打开新页面时左滑展示,返回

  • 我一直在尝试模块化我的React.js应用程序(它将作为带有Electron的桌面应用程序提供),如果我将来制作一个新模块,我只需添加一个新文件夹和修改几个文件,它就可以很好地集成。我最初受到这篇文章的启发:https://www.nylas.com/blog/react-plugins/ 在那之后,我开始尽可能多地研究,并最终创建了一个JSON文件,该文件将保存在服务器中,其中包含为特定客户机注