vue数据解绑

前言:现在做前端不会一些JS前沿框架,还真不好意思说自己是做前端的,我现在的公司也已经开始用VUE来做项目了,我做vue开发快两年了,是我司最早一个使用VUE开发项目了,当前也一直停留在VUE使用阶段。

解释:这篇文章是我个人的一些总结和记录。

VUE的官方文档写的很好,还是中文文档,对于我们这些英文水平不行的帮大忙了,

一、VUE数据绑定

1、表单数据绑定。(下面列子)

<script>
      data(){
            return{
                message:""
            }
      }
</script>
<inputv-model="message"placeholder="">
<p>Messageis:{{message}}</p>

这样当我们input value的值发生改变时message值也同事发生了改变。

2、网络请求数据绑定。(下面列子)

<script>
    data(){
        return {
              // 数据集合
             list:[]
        }
    },
    methods: {
        async getHttp() {
            // http请求
            const res = await fetch('http://www.qingqiu.com').then((res)=>res.json())
            this.list = res.rs
        }
    }
    
</script>
<div class="content-list">
    <li class="list" v-for="item in list" :key="item.id">{{item.text}}</list>
<div>

当请求数据返回成功后返回数据,赋值给list后页面会自动渲染数据。

3、简单说说数据绑定思路。

在JS Object中有个属性叫defineProperty,这个属性可以用来监听对象中指定key值的变化。

let obj = {
    name: "张三",
    age: 18
}
Object.defineProperty(obj, 'name', {
   get: function () {
      console.log('将要读取obj.name属性');
   }, 
   set: function (value) {
        console.log('当前修改的值:', value);
   }
});
obj.name;  // 将要读取obj.name属性
obj.age;   // 不会触发get
obj.name  = "李四";  // 当前修改的值:李四
obj.age = 22;   // 不会触发set

这时我们就可以通过get/set对数据进行处理,这便是一个简单的数据绑定。

当然Object.defineProperty(obj, prop, descriptor),第三个参数还有许多配置
defineProperty》》

二、VUE数据解除绑定

1、当我们在使用vue赋值的时候会出现这种场景。

<script>
    data(){
        return {
              // 数据集合
             list:[1,2,3,4,5]
        }
    },
   created() {
      let data = this.list
      // 删除数组中的第一位
      data.splice(0,1)
   }  
</script>
结果:data  // [2,3,4,5]
结果:this.list // [2,3,4,5]

结果this.list中的数据也发生了改变,窝草............,改成这样。

<script>
    data(){
        return {
              // 数据集合
             list:[1,2,3,4,5]
        }
    },
   created() {
      let data = [...this.list]
      // 删除数组中的第一位
      data.splice(0,1)
   }  
</script>
结果:data  // [2,3,4,5]
结果:this.list // [1,2,3,4,5]

当你修改data的变量时就不会影响this.list(object也是同理)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 3,182评论 1 4
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,198评论 0 29
  • vue理解浅谈 一 理解vue的核心理念 使用vue会让人感到身心愉悦,它同时具备angular和react的优点...
    ndxs2008阅读 24,444评论 2 18
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,649评论 0 25
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 10,076评论 1 52

友情链接更多精彩内容