当前位置: 首页 > news >正文

购物网站开发背景今日最新新闻重大事件

购物网站开发背景,今日最新新闻重大事件,学做投资网站,100平米餐馆装修设计文章目录 一、前言二、实现三、优化四、总结五、最后 一、前言 在开发中&#xff0c;你经常会遇到这么一种情况&#xff1a;根据条件动态地切换某个组件&#xff0c;或动态地选择渲染某个组件。 Vue 提供了另外一个内置的组件 <component> 和 is 特性&#xff0c;可以更…

文章目录

  • 一、前言
  • 二、实现
  • 三、优化
  • 四、总结
  • 五、最后

一、前言

在开发中,你经常会遇到这么一种情况:根据条件动态地切换某个组件,或动态地选择渲染某个组件。 Vue 提供了另外一个内置的组件 <component>is 特性,可以更好地实现动态组件。

二、实现

首先来看看<component>is 的基本使用,首先定义三个普通组件ABC

<template><div>组件 A</div>
</template>
<script>export default {}
</script><template><div>组件 B</div>
</template>
<script>export default {}
</script><template><div>组件 C</div>
</template>
<script>export default {}
</script>

然后在父组件中导入这 3 个组件,并动态切换:

<template><div><button @click="handleChange('A')">显示 A 组件</button><button @click="handleChange('B')">显示 B 组件</button><button @click="handleChange('C')">显示 C 组件</button><component :is="component"></component></div>
</template>
<script>import componentA from '../components/a.vue';import componentB from '../components/b.vue';import componentC from '../components/c.vue';export default {data () {return {component: componentA}},methods: {handleChange (component) {if (component === 'A') {this.component = componentA;} else if (component === 'B') {this.component = componentB;} else if (component === 'C') {this.component = componentC;}}}}
</script>

这里的 is 动态绑定的是一个组件对象Object),它直接指向 a / b / c 三个组件中的一个。除了直接绑定一个 Object,还可以是一个 String,比如标签名、组件名

下面的这个组件,将原生的按钮 button 进行了封装,如果传入了 prop: to,那它会渲染为一个链接地址 <a> 标签,用于打开这个,如果没有传入 to,就当作普通 button 使用。

<template><component :is="tagName" v-bind="tagProps"><slot></slot></component>
</template><script>
export default {props: {// 链接地址to: {type: String,default: ''},// 链接打开方式,如 _blanktarget: {type: String,default: '_self'}},computed: {// 动态渲染不同的标签tagName() {return this.to === '' ? 'button' : 'a'},// 如果是链接,把这些属性都绑定在 component 上tagProps() {let props = {}if (this.to) {props = {target: this.target,href: this.to}}return props}}
}
</script>

使用组件:

<template>
<div><i-button>普通按钮</i-button><br /><i-button to="https://juejin.cn">链接按钮</i-button><br /><i-button to="https://juejin.cn" target="_blank">新窗口打开链接按钮</i-button>
</div>
</template>
<script>
import iButton from './components/button.vue'export default {
components: { iButton }
}
</script>

最终会渲染出一个原生的 <button> 按钮和两个原生的链接 <a>,且第二个点击会在新窗口中打开链接,如图:

img

i-button 组件中的 <component> is 绑定的就是一个标签名称 button / a,并且通过 v-bind 将一些额外的属性全部绑定到了 <component> 上。

三、优化

再回到第一个 a / b / c 组件切换的示例,如果这类的组件,频繁切换,事实上组件是会重新渲染的。

现在在组件 A 里加两个生命周期 mounted, beforeDestroy。只要切换到 A 组件,mounted 就会触发一次,切换到其它组件,beforeDestroy 也会触发一次,说明组件再重新渲染,这样有可能导致性能问题。

为了避免组件的重复渲染,可以在 <component> 外层套一个 Vue.js 内置的 <keep-alive> 组件,这样组件就会被缓存起来:

<keep-alive><component :is="component"></component>
</keep-alive>

这时,只有 mounted 触发了,如果不离开当前页面,切换到其它组件,beforeDestroy 不会被触发,说明组件已经被缓存了。

四、总结

动态组件广泛应用于灵活渲染组件的场景,根据某种条件来渲染不同的组件,搭配<keep-alive>可以避免组件频繁的创建与销毁。

源码地址可点击【跳转】访问,在线调试代码

五、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕

http://www.tj-hxxt.cn/news/96204.html

相关文章:

  • 大连网站制作案例关键词搜索推广
  • 聊城专业做网站公司线上营销工具
  • 受欢迎的福州网站建设开一个免费网站
  • 怎样做网站连接南京seo招聘
  • 怎么做网站热线电话口碑营销案例ppt
  • 申请品牌注册商标流程铜川网站seo
  • 做网站为什么没收入双11销售数据
  • b2b电子商务模式有哪些网站常见的网络推广方式
  • 设计中国展外贸推广优化公司
  • 杭州模板网站建设系统合肥seo网站管理
  • 网站怎么做dns解析宁波seo推广优化公司
  • 网站推广的分类sem竞价外包公司
  • 甘肃省城乡与住房建设厅网站广告精准推广平台
  • jsp语言做网站优化设计三年级上册答案
  • 林芝网站建设关键词seo公司推荐
  • 怎么用自己主机做网站关键词分词工具
  • 好的淘客网站seo搜索铺文章
  • 无锡工程建设招标网站全媒体广告代理加盟
  • 网站模块设计长沙营销网站建设
  • 优秀的网站有哪些内容seo怎么做优化工作
  • 建设网站的合同广州网站优化排名系统
  • 广州h5设计网站公司在百度平台如何做营销
  • 太原如何做百度的网站小红书搜索关键词排名
  • 上海做设计公司网站湖南seo推广系统
  • vs 2008网站做安装包网站注册信息查询
  • 网站跳出率多少抖音竞价推广怎么做
  • 网站备案阿里云流程手机版谷歌浏览器入口
  • 网站如何启用gzip压缩seo是什么的
  • 入职中企动力一月有感seo公司多少钱
  • 网站没有做适配 怎么办今日新闻 最新消息 大事