Vue组件——动态、缓存、异步组件

这篇具有很好参考价值的文章主要介绍了Vue组件——动态、缓存、异步组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 动态组件 component

语法:静态:<component is="组件名"></component>

           动态:<component :is="组件名"></component>

可以用来实现页面的切换:

// 模板
    <component :is="n"></component>
    <button @click="fn('Box1')">btn_box1</button>
    <button @click="fn('Box2')">btn_box2</button>
    <button @click="this.n = 'Box3'">btn_box3</button>

// 方法
<script>
// 同步引入组件
import Box1 from "./components/Box1.vue"
import Box2 from "./components/Box2.vue"
import Box3 from "./components/Box3.vue"
export default{
    methods: {
        fn(arg) {
            this.n = arg
        }
    },
}
</script>

问题:当我们在其中一个组件中写了一个输入框,在输入过一次后,切换到其他页面然后再切换回来时,之前输入的值就没有了。因为切换走当前组件时,该组件就销毁了,再切换回来时,又会重新挂载一次,所以前面的操作就都没有了。

想要实现即时我切换走当前组件,下次切换回来时之前的操作还在,就可以使用缓存组件,将该组件缓存起来。

2. 缓存组件——keep-alive

2.1 语法——与动态组件搭配使用

<keep-alive> <component is="组件名"></component> </keep-alive>

1. 属性include:包括谁就只缓存谁 

           exclude:除了xx,其余都缓存

写法:1. include="Box1"  用得多

           2. :include="/Box1|Box3/"  加了:时等号后面的为js语言环境,可以写正则表达式

           3. :include="变量名"

简单使用案例:缓存Box1,Box3组件,也就是切换走时不销毁这两个组件;切换走Box2时,Box2就销毁了,下次切换到Box2时,该组件就mounted一次。

        <keep-alive include="Box1,Box3">
            <component :is="n"></component>
        </keep-alive>

Vue组件——动态、缓存、异步组件

         此时也出现了一个问题,当我在1组件勾选了一些选项时,切换到2组件又勾选了其他的选项,再切换回1组件,它缓存了之前的数据,就不会新增后面的筛选条件。比如说:在逛淘宝的时候,我先搜索了短袖,在筛选组件中勾选了几个筛选条件,那它展示的商品就会限定在一定范围内一般会在生命周期函数的mounted函数中实现首屏数据,当

2.2 缓存组件的两个钩子函数——activated/deactivated

        1. 活跃状态——activated

        渲染函数,切换一次页面,就调用一次渲染函数,回到这个组件时做操作(比如再做网络请求)activated() { console.log("box1渲染了一次"); }

        2. 失效状态——deactivated

        用于切换前缓存用户的数据。之前介绍生命周期函数时,缓存用户关闭页面前的相关数据(比如:音乐、视频播放事件),可以在销毁钩子(unmounted)中实现,但前面缓存在组件,缓存的组件不会销毁,也就是没有销毁钩子。但又想实现上面写的问题,所以Vue框架提供了deactivated函数来缓存用户的最后操作。离开这个组件时做操作deactivated() { }

简单案例:基于上面的动态组件

// Box1组件
// 1. template标签内
// 双向数据绑定v-model
<input type="text" v-model="email"><br>
<input type="text" v-model="tel">

// 2. script标签内
<script>
export default {
   activated() {
        console.log("box1渲染了一次");        
    },
    // 离开这个组件时做操作
    deactivated() {
        console.log("缓存用户离开Box1前的数据");
        // 这里缓存用户离开该组件前的数据
    }
}
</script>

Vue组件——动态、缓存、异步组件

3. 异步组件

类似于懒加载,先不将组件全部打包,当切换到该组件时才打包这个组件,可以提高效率,节省内存。

语法:

Vue2.x:Box1:()=> import("./components/Box1.vue"),

Vue3.x:先引入 import {defineAsyncComponent} from "vue"

               用法:Box1: defineAsyncComponent(()=> import("./components/Box1.vue")),文章来源地址https://www.toymoban.com/news/detail-489320.html

到了这里,关于Vue组件——动态、缓存、异步组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE组件--动态组件、组件保持存活、异步组件

    有些场景可能会需要在多个组件之间进行来回切换,在vue中则使用 component :is=\\\"...\\\" 来实现组件间的来回切换  changeHandler()使用三目运算符,来实现Component1和Component2之间的相互切换  默认为组件1   当组件1切换到组件2时,组件1会被强行销毁 初始态:  点击“更新数据”: 点

    2024年01月19日
    浏览(31)
  • vue3 动态组件和异步组件

    当使用 component :is=\\\"...\\\" 来在多个组件间作切换时,被切换掉的组件会被卸载。我们可以通过 KeepAlive组件强制被切换掉的组件仍然保持“存活”的状态。

    2024年02月08日
    浏览(32)
  • VUE3+vite项目中动态引入组件和异步组件

    1. 把项目中所有vue文件注册成异步组件。 2. 获取组件 在setup函数获取组件 3. 参考如下 Glob 导入 Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块: 以上将会被转译为下面的样子: 你可以遍历 modules 对象的 key 值来访问相应的模块: 匹配到的文件默认是懒加载的

    2024年02月10日
    浏览(89)
  • Vue Router 路由动态缓存组件

    Vue Router 允许你缓存路由组件,这样在用户导航回之前的页面时,组件的状态会被保留而不是重新渲染。这可以通过使用 keep-alive 组件来实现。 keep-alive 是一个内置抽象组件,它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。 它的主要作用是缓存不活动的组件实例,

    2024年04月16日
    浏览(26)
  • vue3,动态引入组件,同时动态设置组件的name,用于keep-alive缓存

    如果有两个页面逻辑大都相同,咱们想到的第一个肯定是写一个组件,然后两个路由都指向这个组件。 那如果现在多添加一个需求:两个页面在切换路由时都需要缓存数据,并且两个页面的缓存数据要求独立。 这个需求很简单:在router-view外层包裹一个keep-alive组件,指定缓

    2024年02月14日
    浏览(36)
  • vue3,vite开发, 动态引入组件,同时动态设置组件的name,用于keep-alive缓存

    如果有两个页面逻辑大都相同,咱们想到的第一个肯定是写一个组件,然后两个路由都指向这个组件。 那如果现在多添加一个需求:两个页面在切换路由时都需要缓存数据,并且两个页面的缓存数据要求独立。 这个需求很简单:在router-view外层包裹一个keep-alive组件,指定缓

    2024年02月07日
    浏览(35)
  • 【vue3】10-vue组件化额外知识补充(下)-动态组件-组件缓存-v-model在组件上的应用

    切换组件案例: 比如我们现在想要实现了一个功能: 点击一个tab-bar,切换不同的组件显示; 这个案例我们可以通过两种不同的实现思路来实现: 方式一 :通过v-if来判断,显示不同的组件; 方式二 :动态组件的方式; 方式一代码示例: 动态组件方式实现 动态组件是使用 component组

    2024年02月08日
    浏览(56)
  • Angular 17+ 高级教程 – Component 组件 の Structural Directive (结构型指令) & Syntax Reference (微语法)

    在 Attribute Directives 属性型指令 文章中,我们学习过了指令。指令是没有 HTML 和 CSS 的组件,它单纯用于封装 JS 的部分。 这一篇我们将继续学习另一种指令 -- Structural Directive 结构型指令。 就代码而言,Structural Directive 和 Attribute Directives 是完全一样的,只是用途不同,因此

    2024年03月10日
    浏览(38)
  • Vue3中使用component :is 加载组件

    1.不使用setup语法糖,这种方式和vue2差不多,is可以是个字符串 2. 使用setup语法糖,这时候的is如果使用字符串会加载不出来,得使用组件实例 第一种方式 第二种方式

    2024年02月16日
    浏览(33)
  • 动态组件、组件缓存

    多个组件使用一个挂载点,并动态切换,就是动态组件 需求:完成一个注册功能页面,2个按钮,一个填写注册信息,一个填写用户简介信息  步骤 定义两个组件 UserName.vue,UserInfo.vue 2个组件 引入到 App.vue组件中 data中定义变量来存放要显示的 组件名 要设置挂载点 component,

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包