我有两个组件,有条件地以v-if呈现:

<Element v-if="this.mode === 'mode'"/>
<OtherElement v-if="this.mode !== 'mode'"/>

我已经加载了两个组件的动画,我在mounted()以下,我只想运行first次加载他们.但是,使用mounted时,每当this.mode发生变化时重新创建组件时,动画就会再次触发.我怎样才能避免这种情况?

推荐答案

您可以将组件封装在keep-alive个元素中..

<keep-alive>
    <Element v-if="this.mode === 'mode'"/>
    <OtherElement v-else />
</keep-alive>

Vue.js相关问答推荐

如何在AXIOS调用响应中动态导入视频并创建它的绝对路径?

视图中的 vue 样式不适用于 html

Nuxt3: 安装vue3-spinner (error: require is not defined in ES module scope)

Vuetify 3 - NavBar 组件占据整个视口高度

如何在 vue2.7 中删除 slot-scope

何时将代码拆分为 Nuxt 中的组件?

混合使用 React 和 Vue 是个好主意吗?

Vue.js 和观察者模式

实现登录命令并访问 vuex 存储

确保在渲染组件之前加载 Vuex 状态

如何将 ASP.NET Core 2.1 与 Vue CLI 3 集成?

如何根据生产或开发模式读取不同的 .env 文件?

vuex: unknown getter: user

vuejs挂载生命周期未触发

Vuejs模板继承

Vuejs:我应该在 vue-router SPA 中的哪里放置一些常用的 js 工具?

阻止 Vue 积极重用 dom 元素

在找不到图像源时设置替代图像

使用 VueJS 使用 3rd 方库打印元素

您正在运行 Vue 的 esm-bundler 构建