Vue数据项

续上一篇文献“Vue模板项和数据项“,继续表述我对Vue选项对象的理解,数据项一共就2项:data、props,但我需要的是短而细致,现在让我们来看看data和props在Vue实例中是如何运作的。
data选项,它的值类型可以为:数值、字符串、对象、BOOL值,一般情况下,Vue的值类型都为对象,因为其他的数据类型Vue不会代理,(代理)也就是说不会对视图层的变量进行数据绑定,只有值类型为对象才能绑定:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

这里我直接将字符串赋值给Vue实例v的属性data,接下来看看视图层是怎么显示的
上图说明Vue实例的data属性不会出现数据数据绑定的情况,至少现在是这样。
根据上文稍微调整一下,我们将字符串放在对象中然后试一试
在这里插入图片描述

同时我也在对应挂载元素中将$data改成了text
在这里插入图片描述
同上文一样,在控制台调用了Vue实例改变属性值,这一次Vue的数据绑定成功了。同上文不同的是,这次我将Vue实例v的值类型改成了对象并在对象中添加属性text,然后Vue对对象中的属性text进行了代理,由此可以得出结论:Vue实例只对data中值类型为对象中的属性进行数据绑定。
我还发现一个很有趣的现象:Vue会对代理对象的对象进行绑定和封装
在这里插入图片描述
在上图,我在外部声明了一个对象b并将他放在实例v中,然后看看控制台的输出
在这里插入图片描述
众所周知,一个纯Object对象根本不长这样,尽管如此,我还是上网查了一下__ob__是什么,然后才知道:ob 会指向一个Observer对象,每个被 双向绑定 的对象元素(数组也是对象)都会有一个__ob__,而且是单例的,具体单例内容不符合本文主题,就不多叙述。
那现在再来提个问题:这个对象b还是原来的那个对象吗,是重新封装的还是在现有对象前提下封装的?
在这里插入图片描述
在这里插入图片描述
我先使用变量c指向b的对象,然后使用Vue代理b,最后再输出
在这里插入图片描述
通过控制台的输出,我们会发现console.log©的结果和52~54的结果都是一模一样的,由此得出结论就是,Vue代理对象b的过程中,也对对象b进行了封装,在这里我做出假设:对对象b的封装很有可能和视图层的数据绑定有关系。
最后是props选项,值类型可以是单个字符串或字符串数组,它可以通过给定的prop属性获取挂载元素中的数据,同data一样,也需要在初始化时预设好。
在这里插入图片描述

如图组件化对于所有的Vue实例指定的挂载元素都有效,只要挂载元素都有指定的标签即可生效(如33行,指定的标签为msg)
以上就是我对Vue数据项的理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,当数据改变时,视图并不会立即更新。这是因为Vue采用了异步更新策略,也就是说,Vue会将数据的变化放入一个队列中,在下一个事件循环中批量更新视图。这样可以提高性能并避免频繁的视图更新。当数据发生改变时,Vue会触发一个更新队列,并在下一个事件循环中执行更新操作。 如果你想立即更新视图,可以使用Vue提供的$nextTick方法或者手动调用Vue的set方法来实现。$nextTick方法可以在Vue的更新队列被清空后执行一个回调函数,这样就可以保证在更新之后立即操作DOM。而Vue的set方法可以用来更新对象或数组的某一项的值,这样可以触发视图的更新。 例如,你可以使用以下代码来更新Vue中的数据并立即刷新数据: this.$set(this.dictOptions, 'isPublic', 1) // 更新对象 this.$set(this.model.roleList,this.selectKey,this.model.roleList[this.selectKey]) // 刷新数组 这样,当数据改变时,Vue会立即更新视图,显示最新的数据。 需要注意的是,直接设置数组的某一项的值虽然改变了数组的值,但视图上显示的仍为数组之前的值。这是因为直接修改数组的某一项并不会触发Vue的更新机制。为了解决这个问题,可以使用Vue的set方法,手动触发视图的更新,使其显示最新的数据。 总结来说,当Vue中的数据发生改变时,需要使用Vue提供的$nextTick方法或者手动调用Vue的set方法来更新视图,以保证数据的响应性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值