【VUE】使用问题记录
【VUE】使用问题记录
=====================================================================
1、Vue.nextTick 修改数据之后更新DOM
2、修改了属性,视图没有刷新,或使用了this.$forceUpdate()
3、鼠标over和out
4、MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”
5、div 滚动条滚动到最底部
6、数组对象里的图片修改后不显示
7、对象copy
8、子组件使用父组件的变量
9、监听 window.open 关闭
10、图片路径引入问题
生命周期图
=====================================================================
1、Vue.nextTick 修改数据之后更新DOM
Vue.nextTick(callback)
在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
this.$nextTick(()=>{
// todo
});
或
Vue.nextTick(()=>{
// todo
});
2、修改了属性,视图没有刷新,或使用了this.$forceUpdate()
如果你发现你自己需要在 Vue 中做一次强制更新,99.9% 的情况,是你在某个地方做错了事。
你可能还没有留意到数组或对象的变更检测注意事项,或者你可能依赖了一个未被 Vue 的响应式系统追踪的状态。
然而,如果你已经做到了上述的事项仍然发现在极少数的情况下需要手动强制更新,那么你可以通过 $forceUpdate 来做这件事。
引起这个问题的大部分原因是因为属性在某种情况下变为非响应式的
比如,从后台返回的对象结构中没有某个属性,或者这个属性不是在data中定义的,而是后来加的。
https://cn.vuejs.org/v2/guide/components-edge-cases.html#强制更新
对象变为非响应式
https://cn.vuejs.org/v2/guide/list.html#注意事项
对象检测
https://cn.vuejs.org/v2/guide/list.html#对象变更检测注意事项
响应式原理
https://cn.vuejs.org/v2/guide/reactivity.html#ad
添加对象属,指定属性和值
Vue.set(vm.user, 'age', 27) 或者 vm.$set(vm.user, 'age', 27)
要添加数组,指定索引和对象
let item = {
value: '10',
label: '张三'
}
this.$set(this.myArray, 1, item);
3、鼠标over和out
@mouseover="imageMouseOver(o.url)"
@mouseout="imageMouseOut(o.url)"
4、MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”
以管理员方式运行命令提示符,全局安装windows构建工具
npm install -–global -–production windows-build-tools
5、div 滚动条滚动到最底部
this.$nextTick(function(){
let div = document.getElementById('divIdxyz');
div.scrollTop = div.scrollHeight;
})
6、数组对象里的图片修改后不显示
引起这个问题的原因是,直接把数组里原来的对象替换成了新对象,导致对象成为了非响应式对象,解决办法是不要替换对象而是修改数组中对象的属性值就可以。
7、对象copy
借助json完美实现对象copy
var a = {name: 'tom', age: 25, address: ['beijing','hangzhou']}
var b = JSON.parse(JSON.stringify(a))
8、子组件使用父组件的变量
https://cn.vuejs.org/v2/api/#provide-inject
父组件 provide 一个变量,子组件 inject 变量
// 父级组件提供 'foo'
var Provider = {
provide: {
foo: 'bar'
},
// ...
} // 子组件注入 'foo'
var Child = {
inject: ['foo'],
created () {
console.log(this.foo) // => "bar"
}
// ...
}
9、监听 window.open 关闭
btnUpdate(row){
this.windowObject = window.open('xxxxxx');
this.loopObject = setInterval(this.waitWindowClose, 1000);//注意不能加括号
},
waitWindowClose() {
if(this.windowObject.closed) {
clearInterval(this.loopObject);
this.windowObject = undefined;
this.loopObject = undefined;
this.reloadList();
}
}
参考: https://www.cnblogs.com/jin-zhe/p/10001236.html
10、图片路径引入问题
动态引入图片。图片文件放入assets目录中
方式一 import,需要在data中注册一下
import logo from '@/assets/img/logo.png';
data() {
return {
logo,
}
}
方式二 require
data() {
return {
logo: require("@/assets/images/avatar.png"),
}
}
<img :src="logo">
鼠标划过修改图片示例
data() {
return {
mouseOutMoreImg: require('@/assets/out.png'),
mouseOverMoreImg: require('@/assets/over.png'),
waitMoreImg: require('@/assets/out.png')
}
}
method() {
waitOver() {
this.waitMoreImg = this.mouseOverMoreImg;
},
waitOut() {
this.waitMoreImg = this.mouseOutMoreImg;
}
}
<img :src="waitMoreImg" class="img" @click="handleMore" @mouseover="waitOver" @mouseout="waitOut">
======================================================================
生命周期图

【VUE】使用问题记录的更多相关文章
- vue.js学习记录
vue.js学习记录 文章已同步我的github笔记https://github.com/ymblog/blog,欢迎大家加star~~ vue实例 生命周期 beforeCreate:不能访问thi ...
- vue 自学笔记记录
vue 自学笔记(一): 知识内容: 安装vue ,创建vue实例,安装第一个组件,单项数据流 https://www.cnblogs.com/baili-luoyun/p/10763163.htm ...
- vue使用tips记录
用vue已经很久啦,这里记录一下一些我觉得比较实用的小tips:
- vue 组件发布记录
好久没做独立的 vue 组件了,最近突然想把一个常用的 vue 组件打成一个 npm 包,方便使用.好久不用,发现已经忘记环境怎么搭建.翻看以前的组件,才慢慢回想起来,中间还出现些错误.在这记录下开发 ...
- Vue 使用History记录上一页面的数据
UI Mvvm 前端数据流框架精讲 Vue数据双向绑定探究 面试问题:Vuejs如何实现双向绑定 数据双向绑定的探究和实现 需求 从列表页的第二页进入详情页,返回时列表页仍然显示在第二页: 从列表页的 ...
- [vue折线图] 记录SpringBoot+Vue3.0折线图订单信息展示
因公司业务需求,需要做一份订单相关的折线图, 如果其中有一天没有订单的话,这一天就是空缺的,在绘制折线图的时候是不允许的,所有要求把没有订单数据的日期也要在图表显示. 使用技术vue3.0+sprin ...
- vue框架-学习记录
前段时间在做vue项目时,遇到挺多问题,想简单总结一下: 1.关于父组件,子组件的通信 网上有很多这方面的讲解,讲解也比较细致,我主要总结了自己在项目中需要的: [1]父组件-子组件 也就是" ...
- vue踩坑记录:[Vue warn]: $attrs is readonly.
今天在用element-ui的DatePicker日期选择器的时候,发现每当点击一次这个组件,控制台就会报警告`[Vue warn]: $attrs is readonly`,但是也不影响实际操作效果 ...
- Js 框架之Vue .JS学习记录 ① 与Vue 初识
目录 与 Vue.js 认识 VUE.JS是个啥?有啥好处? Vue 的目标 战前准备 VUE.JS环境 VUE.JS 尝试一下,你就明白 第一步 实例化VUE 对象 第二步VueAPP 调用数据 ...
- Vue.js简单记录
官网:https://cn.vuejs.org/ https://cn.vuejs.org/v2/api/#methods v-bind 缩写 <!-- 完整语法 --> <a v- ...
随机推荐
- ES6学习 let const
1.前言 发现网易云笔记 单纯的记笔记没什么意思,所以今天来博客园写学习感受了,毕设做了休息时间就来写写新学的知识 哈哈哈 !! 2.ES6 就是JavaScript 语言的下一代标准,2015年6月 ...
- oracle实现"limit"功能
转载于http://blog.sina.com.cn/s/blog_67e2758d0100s3oc.html oracle数据库不支持mysql中limit功能,但可以通过rownum来限制返回的结 ...
- Centos7編譯安裝LAMP平臺
什麽是LAMP? 拆開看 L 就是Linux系統 A是Apache的縮寫 M.P則是MySQL和PHP的简写. 其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行 ...
- 🔥《手把手》系列基础篇之2-python+ selenium-打开和关闭浏览器(详细)
1. 简介 本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckod ...
- ASP.NET Aries 高级开发教程:如何写WebAPI接口
前提: 最近,有不少同学又问到,Aries里如何提供WebAPI接口? 针对这个问题,今天给顺路写个教程,其实呢,很简单的. 方式一:直接用WebService提供接口. 用这种方式,直接添加接口就可 ...
- 部署helm服务
helm在ocp中相当于catalog中的template k8s中使用helm之前遇到的问题 .很难管理.编辑和维护如此多的服务.每个服务都有若干配置,缺乏一个更高层次的工具将这些配置组织起来. . ...
- GeoServer 安装教程
准备内容 安装环境:win10*64位专业版 安装文件:geoserver-2.15.2 安装步骤 安装JDK 1.安装GeoServer是基于Java的环境,所以需要先装Jdk环境. 2.前往官网下 ...
- PHP与Python进行数据交互
最近,决定在一个项目用tp5进行APP接口开发,用Python做数据分析,然后这就面临一个问题:PHP和Python如何进行数据交互? 思路 我解决此问题的方法是利用了PHP的passthru函数来调 ...
- axios 请求二次封装
/** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function get(url, params) { ...
- RPM命令执行失败:bash: rpm: 未找到命令...
出现错误截图如下: 这是由于误操作导致rpm文件缺失导致 将另一台完好的服务器上RPM文件及缺失文件上传至异常服务器上即可修复 异常服务器A:192.168.1.230 完好服务器B: 任意 服务器B ...