Vue

108、Vue2.0 $set()的正确使用方式

2019-11-19  本文已影响0人  world_7735
<html>

<head>
  <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>

<body>
  <div id="app">
   <ul>
     <li v-for="(item,index) in data" :key="index">{{item}}</li>
   </ul>
   <button @click="changeData">按钮</button>
  </div>
</body>

</html>
<script>
  new Vue({
    el: '#app',
    data() {
      return {
       data:['路费','可不','小哀','乔巴']
      };
    },
    methods: {
      changeData() {
        this.data[2]='娜美'
      }
    }
  })
</script>

点击页面没刷新:



改成一下写法:

 methods: {
      changeData() {
        this.$set(this.data,2,'娜美');
        // Vue.set(this.data,2,'娜美');
        // this.data.splice(2,1,'娜美');
      }
    }
Vue.set 参数
参数:

{Object | Array} target
{string | number} key
{any} value
返回值:设置的值。
import { set } from '../observer/index'
...
Vue.set = set
...

this.$set()源码

import { set } from '../observer/index'
...
Vue.prototype.$set = set
...

结果我们发现Vue.set()和this.set()这两个api的实现原理基本一模一样,都是使用了set函数。set函数是从 …/observer/index 文件中导出的,区别在于Vue.set()是将set函数绑定在Vue构造函数上,this.set()是将set函数绑定在Vue原型上

上一篇下一篇

猜你喜欢

热点阅读