第一次写vue项目,遇到了很多的问题,都是之前没有遇到过的,例如这次遇到当使用路由跳转时,发现页面数据并没有刷新,后来看了vue-router的文档,里面有这么一句话:**提醒一下,当使用路由参数时,例如从 /user/foo 导航到 user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。**这句话的意思是,虽然路由参数发生了变化,但是组件被再次复用,页面没有变化,数据也没有刷新。不过,官网也给出了相对应的解决方案:**复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch(监测变化) $route 对象:**
~~~
const User = {
template: '...',
watch: {
'$route' (to, from) {
// 对路由变化作出响应...
}
}
}
~~~
今天查资料时,发现了一个比较简单的解决方案,看vue官网教程的条件渲染时,发现一句很有意思的话:要想两个元素是完全独立的,不要复用它们”。只需添加一个具有唯一值的 key 属性即可(**说明用:key可管理复用元素**),以前认为v-if是动态的生成/去除元素,仔细看例子,会发现:模板相同,会造成一种“复用”的感觉(v-if和v-else的模板是一样一样的),也就是说,**数据更新之前,会先比较模板先后的异同,再决定是否跟新数据,并不是先更新数据,再刷新模板**。
解决方法:**key是用来阻止“复用”的。 Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可(Vue文档原话)。**
~~~
<router-view :key="key"></router-view>
computed: {
key() {
return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
}
}
~~~
- mui框架
- toast提示框的使用
- 星级评分
- 上拉刷新和下拉加载里超链接失效的原因
- confirm确认框的使用
- 取消下拉刷新和上拉加载的border
- 解决使用加载的方式捕捉不到dom
- css样式篇
- css3实现0.5像素的边框
- css3样式中的border-radius的圆角边框
- css面试篇之红色十字架
- css样式~~用图片模拟单选框radio的功能
- div设置绝对定位以后,文字实现居中
- 设置input里面字体颜色和大小
- js知识篇
- javascript篇~~九九乘法表
- js~跳转提示页面
- js~实现60秒倒计时
- 正则表达式之保留小数点后两位小数
- 数组操作方法篇
- Array.prototype.filter()的用法
- 使用正则去除空格
- jQuery知识篇
- jQuery~~模仿radio图片切换
- 下拉菜单的滑动效果
- jQuery点击切换字体颜色
- jQuery实现图片和字体图标颜色的切换
- 左侧菜单之当前点击菜单展开,其他菜单收缩
- jQuery全选或全部不选
- 实现子菜单的收缩和展开
- 小程序
- 小程序~调用豆瓣api数据的问题
- 实现毫秒级倒计时
- 条件渲染-wx:if语句
- 实现两个页面共存
- wxss样式问题
- 修改按钮默认的border-radius
- 移动端
- 安卓底部按钮浮上来的解决方法
- excel(xlsx) to json
- vue
- 事件
- 某个元素的点击事件
- 阻止子事件的冒泡
- excel文件的导入功能(解析成json数据)
- iview框架
- render函数
- iview不支持键盘事件的解决方法
- 路由传参
- 搜索框template的基本写法
- watch监听
- 路由发生变化,数据没有更新?
- 动态组件
- 刷新组件
- 前端小功能
- 搜索框
- axios
- axios公共请求方法
- cookie的简单使用
- 微信扫码登录功能
- pc端微信扫码登录-内嵌网页版
- MongoDB
- 安装与配置
- 布局
- js判断打开是PC端还是移动端
- 自适应布局方案-视口布局
- js实现加密和解密的公共方法
- js实现正则表达式匹配的文字加上标签
- python
- 解决pip升级不成功的原因
- Django
- runserver 失败的原因