黄老您好。
首先这里的逻辑是真的有点绕呀。。我看两遍,局部重复看了好几遍。
有个地方脑袋卡住了。关于watch那里,也就是5-7节的最后三分钟左右那里。以下是我理解的逻辑描述:
此时存在的bug是点了头两次shop-cart那里是正常的,从第三次点击起就越点越深了。
点击事件是这样的:
toggleList() {
if (this.listFold) {
if (!this.totalCount) {
return
}
this.listFold = false
this._showShopCartList()
this._showShopCartSticky()
} else {
this.listFold = true
this._hideShopCartList()
}
}
一开始listFold是从props里的fold在data()中赋予的。
this.listFold = true
this._hideShopCartList()
// 即此时的listFold变为true,然后hide掉list,并且触发js动画钩子发送事件销毁掉了sticky组件。
fold: 'listFold'
这里是字符串,即响应式的变化。那么在第二次点击时listFold变为了true,第三次点击真正的shop-cart时,listFold也应该是true。那么第三次点击后,就执行的是: if (this.listFold) {
if (!this.totalCount) {
return
}
this.listFold = false
this._showShopCartList()
this._showShopCartSticky()
此时listFold变为false,再show出list和sticky,传入sticky的props的fold: 'listFold'
这个fold也应该是false嘛?接着第四次点击的时候不应该就这样正常地重复第二次点击时那种场景嘛。。为啥会从此时越点越深呢?
我不明白黄老您说的 “listFold在data()中被this.fold(props传的)初始化一次后,之后listFold值与this.fold再无关联。”这句话和本次的逻辑有什么关联。。所以我不懂此处为什么出现这个bug和为什么要watch fold,那应该是我逻辑错了。。请问我逻辑错在哪儿呢黄老?
掌握Vue1.0到2.0再到2.5最全版本应用与迭代,打造极致流畅的WebApp
了解课程