Vue之mixins与 shim 名词解释以及列表渲染key的作用

本文介绍了Vue的mixins概念,包括局部混入和全局混入,强调全局混入的慎用。接着解释了shim的含义,它是模拟新API以兼容旧环境的技术。最后详细阐述了列表渲染中key的作用,即避免VDOM的就地复用问题,确保正确的状态更新,并给出了使用key的注意事项。
摘要由CSDN通过智能技术生成

一、mixins

概念:
  • 混合 将根实例或是组件中的配置项 抽离出来,单独管理
  • mixins分为两种混入方式 局部混入全局混入
1. 局部混入
<script>
var mixin = {   //这种mixins使用方式是属于局部混入,直接创建一个对象
        methods: {  //这个method指的就是new Vue里面的methods
                 sum(){
                      alert( 10*10 )
                    }
            },
     }

new Vue({
	el: '#app',
	data: {},
	watch: {},
	mixins: [mixin],
	methods: {
             redecer(){
                    alert( 90 )
                   },
             sum(){
                    alert('lxl')
                }
         },
  })
</script>
2. 全局混入(这种方法不推荐,只要设置了全局混入,就会影响所有的new Vue () 组件)
<script>
     Vue.mixin({  //这种方式是属于全局混入,会影响到所有的new Vue组件,相当于每一个new Vue都有这个方法
	methods: {
	   changeName(){
	          alert('lxl')
	            }
	      }
   })

new Vue({
	el: '#app',
	data: {},
	watch: {},
	methods: {
	       redecer(){
	            alert( 90 )
	      },
               sum(){
                 alert('liu')
           }
     },
})
</script>
注意:
  • 即使分离出去, 我们的配置项中也可以继续写分离出去的配置

  • 如果说分离出去中的内容有冲突, 以组件中的配置项为准

    1. 关于全局混入
      • 注意: 全局混入慎用(不建议你使用)
      • 理由:全局混入会影响所有的组件(实例)

二、shim名词解释

这个名词出现在:Vue.js官网中关于响应式原理的介绍中 Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是 Vue 不支持 IE8 以及更低版本浏览器的原因。

shim 指的是在一个旧的环境中模拟出一个新 API ,而且仅靠旧环境中已有的手段实现,以便所有的浏览器具有相同的行为。主要特征:

  • 该 API 存在于现代浏览器中;
  • 浏览器有各自的 API 或 可通过别的 API 实现;
  • API 的所有方法都被重新实现;
  • 拦截 API 调用,并提供自己的实现;
  • 是一个优雅降级。

三、列表渲染key的作用

1. 如果没有key会产生的问题:

VDOM是惰性的, 它有一个原则, 这个原则叫做’就地复用’ , 它认为我的第一个就是红色的, 删除了第二个之后, 第二个就变成了第一个, 它印象中第一个是红的, 所以就我们认为的第二个变成红的了

解决: 使用key属性

使用:

    <li v-for = " (item,index) in list " :key = "item.id">

注意:
1. 优先使用数据中能够识别的, 比如 : id
2. 最差再用 index

一定要注意:每一次的循环都要添加key
假如是涉及到循环子项有删除增加则一定要保证每个key都不同否则一定会出现问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值