首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止FOUC时离开路线与'vue-flickity‘旋转木马/滑块?

如何停止FOUC时离开路线与'vue-flickity‘旋转木马/滑块?
EN

Stack Overflow用户
提问于 2019-09-28 00:19:09
回答 1查看 236关注 0票数 1

我在我的Vue应用中使用了MetaFizzy's Flickityvue-flickity包。当从具有vue-flickity滑块实例的路线导航离开时,您会看到一个简短的一览表,其中显示文档中所有未设置样式的幻灯片,因为<Flickity />滑块已卸载(?)视图也会发生变化。

我尝试过将其包装在<keep-alive>中,但无济于事。

在用户离开某个路线之前,隐藏或“动画显示”组件的最佳方法是什么?

我还尝试使用beforeRouteLeave(),将<Flickity ref="mySlider" />上的opacity转换为0,然后更改路由。我尝试了下面这样的方法,但它没有像预期的那样工作:

代码语言:javascript
复制
// SliderView.vue

<template>
  <Flickity ref="mySlider">
    <div v-for="(slide, index) in slides" :key="index">
      // slide content markup
    </div>
  </Flickity>
</template>

<script>
  import 'Flickity' from 'vue-flickity'

  export default {
    name: 'SliderView'
  }
</script>
代码语言:javascript
复制
// router.js

import Vue from 'vue'
import Router from 'vue-router'
import SliderView from './views/SliderView.vue'

export default new Router({
  routes: [
    {
      path: '/routeWithSlider',
      component: SliderView,
      beforeRouteLeave (to, from, next) {

        const slider = this.$refs.mySlider

        if (slider) {
          slider.style.transition = 'opacity .5s'
          slider.style.opacity = 0
          setTimeout(() => {
            next()
          }, 600)
        } else {
          next()
        }
      }
    }
  ]
})

这是正确的方法吗,或者我应该以不同的方式来处理?

此外,如果有一种方法可以在不指定refs的情况下全局地为所有路由上的所有<Flickity />实例执行此操作,这也会很有用。

我使用Vue的时间还不长,所以我正在寻找一些方向的指导。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 19:31:43

我发现实现这一点的最好方法是在组件上使用BeforeRouteLeave()生命周期钩子,在更改路由之前使用滑块来设置Flickity滑块退出的动画:

代码语言:javascript
复制
beforeRouteLeave (from, to, next) {
  const slider = this.$refs.flickity.$el
  slider.style.transition = 'opacity .25s ease'
  slider.style.opacity = 0
  setTimeout(() => {
    next()
  }, 250)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58138241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档