dd-touch问题总结

1.二次封装cube-scroll组件

  • 遇到问题:
    • 1cube-scroll组件的上拉加载功能, 在没有数据的时候或数据一样时, 需要调用this.refs.scroll的forceUpdate()方法, 才能结束此次加载, 从新开始下次监听, 这里需要把this.refs.scroll传到父组件,
      • 解决方法: 在data中声明一个变量, 在mounted钩子中将, this.refs.scroll传给这个变量, 在通过emit把scroll组件的pulling-up和pulling-down事件派发出去并把this.$refs.scroll作为参数传过去

2.tabbar配合动态组件时候, 出现警告

vue.runtime.esm.js?8bc8:587 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "currentIndex"

found in

---> <DdTabbar> at src/components/dd-tabbar.vue
       <Test1> at src/components/test1.vue
         <App> at src/App.vue
           <Root>

错误翻译: 避免直接改变prop, 因为props的值会被覆盖, 当父组件重新渲染时, 用data或computed属性复制prop的值, prop变成currentIndex

解决方式报错已经给出: 把prop复制到data里

3.tabbar组价配合cube-slide组件, 互相关联index

  • 1通过this.$refs.slide获取到cube-slide的vue实例, 通过实例的访问BScroll对象, 调用goToPage()去改变cube-slide的轮播

4.进度条
收获: 学会了svg-progess-bar这个轻量有好用的库的使用,

  • 解决方法: 使用svg-progress-bar插件, github

5.数字快速增涨动画效果

  • 解决方法: 使用vue-count-to插件, wiki
  • api:
属性 描述 类型 默认值
startVal 动画开始的数值 Number 0
endVal 结束的数值(最终需要显示的数值) Number 2017
duration 动画时间 Number 3000
autoplay 是否在mounted后自动播放 Boolean true
decimals 需要显示的小说位数 Number 0
decimal 分割小数的字符 String .
separator 千进制分隔符 String ,
prefix 前缀 String ''
suffix 后缀 String ''
useEasing 是否使用easing function Boolean true
easingFn easingFn Funcion -
方法名 描述
mountedCallback when mounted will emit mountedCallback
start start to countTo
pause pause to countTo
reset reset the countTo

6 移动端适配: amfe-flexible
收获: 配合sass等, 实现rem适配
7 登录接口报404,
问题 原因: 未使用Form Data方式传递数据
解决方法: 使用axios.transformRequest:

axios({
  ...,
  transformRequest: [function(data, headers) {
    let ret = ''
    for(item in data) {
      ret += '&' + encodeURIComponent(item) + '=' + encodeURIComponent(data[item])
    }
    ret = ret.slice(1)
    return data
  }]
})

收获:

  • Form Data和Request Payload的区别:
      1. Content-Type不同: Request Payload是applications/json; Form Data是 application/x-www-form-urlencoded
      1. 请求的数据格式不同: RP是json: {a: 'a', b: 'b'}, FD是 key1=val1&key2=val2
  • 学会了axios如何提交Form Data数据

8 登录验证接口报跨域(在配置好devServer的情况下),这个是后台处理的问题,

9 在使用filter时候, 对数字进行处理

  • 情景: 为防止不是数组使用Number()方法转换, 如果结果是NaN, 怎直接返回原值,
  • 问题: 如何用NaN进行if()判断,可以使用isNaN()方法, 除了数字, 都返回true

10 在使用keep-alive和cube-scroll时候, 再次返回路由的时候, 无法滑动, cube-scroll在有请求数据的时候会展示不全,

  • cube-scroll请求接口显示不全是因为, 请求接口还没结束, cube-scroll就已经获取了填充内容的高, 如果请求完接口后会改变填充内容的高度, cube-ui就不会更新高度, 这样就导致了, 显示不全(betterScroll原理就是父子容器的高度差) => 解决方案是: 预先设定好, 内容的高度
  • keep-alive这个问题目前还没解决, 不过貌似, 时有时现

11 项目中出现很多, 单独接口并且要求执行顺序, 使用Promise的链式调用,

  • 在then()里边返回下一个接口的Promise

12 请求数据时候,跳转路由,需等待接口请求完毕才能完成路由跳转?

13 项目中精选产品, 一个标题, 后边跟着1个或若干子项,
使用递归组件 - 待解决

14 computed和template里无法访问数组里的值?

解决方法: 在mutations, 异构需要的数组

15 axios.post json转formData

  • 使用内置的qs模块的qs.stringify(), 把data参数转一下就行了

16 cube-slide在请求接口数据的时候, initialIndex参数(设置默认页)失效

解决方法: 查看cube-slide源码, 发现凡是请求的接口, 都需要执行一次refresh()方法, 在refresh()方法里, 初始化currentPageIndex = 0 而并非initialIndex, 手动修改

17 路由跳转时, 中断所有的ajax请求

解决方法:

const CancelToken = axios.CancelToken
const source = CancelToken.source()
// 将 cancelToken: source.token添加到axios配置中
// 调用source.cancel('text')

18 <component :is="">在使用动态组件时, 判断组件切换

19 需要在v-bind指令里拼接, filter过滤的数字和字符串

解决办法: 在v-bind里, filter会过滤掉v-bind里所有的内容, 只能在filter里进行处理, 通过正则匹配汉字部分, indexOf()和slice()获取数字部分

20 在getters中异构state中的数据报错, 无法直接在state中的对象里添加属性

解决方法: 将对象进行深拷贝

  • 深拷贝的方法(对象)
      1. Object.assign(): 只有一层深拷贝, 如果只是一层的深拷贝可以使用, 需要封深层的深拷贝可以用2
      1. var obj1 = JSON.parse(JSON.stringify(obj))
  • 深拷贝的方法(数组)
      1. for循环
      1. slice(): var copyArr = arr.slice(0)
      1. concat(): var copyArr = arr.concat()
      1. es6 扩展符: var [ ...copyArr ] = arr
  1. 在使用actions异步请求数据的时候, 报错, 找不到数据
  • 出错原因: 在数据还未请求回来, 就进行了渲染, 使用v-if做判断
  1. 使用数组方法concat() 遇到的问题
- concat()方法不会修改原数组, 需要重新获取concat()的值, var newArr = arr.concat(arr1)
  1. 父组件跳转子路由, 子路由里有需要请求数据, 并吧数据存到vuex里, 每次跳到路由, 都会重复请求一次接口, 就会叠加重复数据
  • 出错原因, vuex中的数据并没有被清理, 而进入路由前都会再次请求一次接口, 这导致了数据的重复获取
  • 解决方案:
    • 在组件中的beforeRouteLeave(){}钩子中, 初始化vuex中的数据 - 这样的话每次进入都会重复请求数据
    • 在请求数据时做一个判断, 如果有数据则不再请求数据, 对于上拉加载的需要在vuex定义对应的页数 - 这种方案, 有点复杂, 但是可以减少http请求, 推荐 - 这里需要注意一点: 不可吧state中记录页数的数据缓存到变量里, 而要直接使用, 否则mutations的改变不会更新到缓存的变量里
  1. 使用keep-alive时, api的数据被缓存之后, 在切回来, 报错Unable to preventDefault inside passive event listener due to target being treated as passive -> 无法监听touch事件
  • 原因: 不明
  • 解决方案: 在css里添加* { touch-action: none; }, 很tm神奇
  1. 我想把cube-scroll的组件BScroll对象, 传到回到顶部组件, 在mounted里获取不到这个BScroll
  • 这是因为BScroll对象, 这个时候, 还没有实例化, 需调在$nextTIck()里面获取
  1. 如何往vue的动态组件<component :is="">里传值
  • ps: if()判断的时候, undefined不要加 ''
  1. 使用keep-alive时候, 使用Bus, 不在activated()钩子里emit事件, 是无法on监听到, 在请求玩接口的.then()函数里监听不到bus.$emit()的事件, 这个目前不知道为啥, 但是问题解决了
  • 解决方案: vue内置组件<component :is=""> 是支持props和$emit的
  1. 怎么判断对象{}为空
- 方法一: 
var c = {};
if(JSON.stringify(c) == "{}"){ console.log(7);}
  1. keep-alive问题, keep-alive的钩子函数activated()子组件比父组件优先执行,
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容