博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue中响应式数据失效&Dom操作无效问题
阅读量:7043 次
发布时间:2019-06-28

本文共 783 字,大约阅读时间需要 2 分钟。

响应式数据失效问题
  • 原因分析:响应式数据被“遗失”

在vue中响应式数据是在初始化时定义在data中,这会使数据变成响应式毫无疑问。

正是这种自信导致当数据发生异常,没有按照预期响应时,我们可能会一脸懵逼,各种找原因。
对于这种问题回归问题本质(其实其它很多问题也是如此),既然数据未按预期响应,肯定是数据本身出了差错:

  1. 数据在其它多个地方响应了变化,导致不是“当前”预期值
  2. 已经脱离响应式
  • 实战分析:响应式数据被“遗失”

假设在data上存在formModel = { name: '', age: '', addr: '' } 通过v-model绑定在表单中。

随后我们去后台拉取数据填充formModel, 可能会这样操作【 this.formModel = response.data 】,咋一看没什么问题,
除非response.data中有所有formModel中的字段,否则缺失的字段就会失去响应,
比如 response.data = { name : '', age: ''},此时formModel中的addr就失去响应。

这种问题既简单又难于发现!

我的解决办法: 继承 Object.assign()

eg: this.formModel = Object.assign(this.formModel, response.data)

Dom操作异常

vue采用虚拟Dom技术来渲染响应页面,因此dom刷新是个异步动作。

我们在开发中不免会有操作dom,为了保证dom操作能够给正确被处理,需要等待dom正在挂载后再进行操作,
即:把相关操作放入nextTick
this.$nextTick(() = > {

// dom operation ...        // dom crud        // dom event     })

转载地址:http://hthal.baihongyu.com/

你可能感兴趣的文章
书评:实战Apache JMeter
查看>>
2014年基于Raspberry Pi的5大项目
查看>>
[deviceone开发]-openPage的动画效果示例
查看>>
EAGLEPCB7.7 gerber文件导出
查看>>
苏宁11.11:苏宁易购移动端的架构优化实践
查看>>
GitHub推出Scientist,帮助开发者重构关键路径代码
查看>>
力荐!这些工具可以帮你写出干净的代码
查看>>
优化typecho性能,使typecho可以流畅支持200w posts
查看>>
UITableView基础[ 3 ] 使用UIRefreshControl实现下拉刷新功能
查看>>
el-admin v1.7 发布,后台管理系统
查看>>
JFinal 开发的内容管理系统 JFinalCMS 1.0 发布
查看>>
Gitea Extension for Visual Studio V1.0.62 发布
查看>>
PHP7 的抽象语法树(AST)带来的变化
查看>>
如何在Mac 终端升级ruby版本
查看>>
国际编程教育权威科学家菲利普.米勒教授来访 SegmentFault 总部
查看>>
API 标准化成为技术团队面临的最大挑战
查看>>
CSS 小三角
查看>>
Ruby on Rails 曝路径穿越与任意文件读取漏洞
查看>>
分享一个基于 Node.js 的 Web 开发框架 - Nokitjs
查看>>
mysql 简单全量备份和快速恢复
查看>>