likes
comments
collection
share

vue2响应式的缺点

作者站长头像
站长
· 阅读数 17

响应式:数据改变-->视图跟着变

对象新增的属性没有响应式 数组的部分操作没有响应式

   push(),pop(),shift(),unshift(),splice(),sort(),reverse()

以上7中API会修改原数组(vue2的内部重写了这7个API)

其他的操作都不会有响应式

实际简单操作一波

<template>
  <div>
<span v-for="(item,index) in arr " :key="index">{{item}}</span>
<hr>
<button @click="arr[0]=100">点击把第一个元素变成100</button>
  </div>
</template>

<script>
export default {
data() {
    return {
        arr:[1,2,3]
    }
},


}
</script>

<style>
span{
    margin: 10px;
    background-color: orange;
    padding: 10px;
    border-radius: 5px;
} button{
    background-color: orange;
    font-size: 20px;
    border: 0;
    cursor:pointer;

}
</style>

vue2响应式的缺点

你们会发现vue里面的数据其实已经改成100了,但是页面并没有渲染出来.

现在我们换一种,换成splice来操作

<template>
  <div>
<span v-for="(item,index) in arr " :key="index">{{item}}</span>
<hr>
<button @click="arr.splice(0,1,100)">点击把第一个元素变成100</button>
  </div>
</template>

<script>
export default {
data() {
    return {
        arr:[1,2,3]
    }
},


}
</script>

<style>
span{
    margin: 10px;
    background-color: orange;
    padding: 10px;
    border-radius: 5px;
} button{
    background-color: orange;
    font-size: 20px;
    border: 0;
    cursor:pointer;

}
</style>

vue2响应式的缺点

数据修改的同时,dom也成功渲染

转载自:https://juejin.cn/post/7098306178379153444
评论
请登录