Vue2.0 仿饿了么app问题解决

本文解决了Vue项目中shopcart组件的cartcontrol按钮无法点击的问题,通过修改computed属性为watch属性实现了better-scroll的创建。同时,针对transition动画失效的情况,调整了DOM结构,确保被控制元素完全包裹在transition标签内。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q1:shopcart中cartcontrol无法点击

错误提示:【Unexpected side effect of listshow...】

原视频是按照vue1.0来的,在computed属性中定义listshow时出现了以上错误提示,错误原因应该是在listshow方法中对fold进行了修改,而默认是只读的,所以按照加入set和get的方法修改后,不再出现错误,列表也能折叠。但是,cartcontrol依然不能点击,说明没有创建better-scroll,也就是set方法没有调用时机。

结合这篇博客https://blog.youkuaiyun.com/weixin_38049458/article/details/79804546

解决方式:采用watch属性进行修改。为了简洁,我去掉了fold,只使用listshow,具体代码如下。

 <div class='shoplist'
      v-show='listshow'>
 </div>

  data(){
    listshow: false
  }

  watch: {
    listshow: function () {
      let show = this.listshow
      if (show) {
        this.$nextTick(() => {
          if (!this.scroll) {
            this.scroll = new BScroll(this.$refs.listcontent, {
              click: true
            })
          } else {
            this.scroll.refresh()
          }
        })
      }
      return show
    }
  }

处理了很久终于解决这个问题...所以对于各种解决方式还是要先思考原理再运用。

Q2:transition动画失效

正确方式是这样的

  <transition name='food'>
    <div ref='food'
         class='outter'
         v-show='foodshow'>
      <div class='food'>
      </div>
    </div>
  </transition>

但一开始将transition放在了outter和food之间,v-show控制的元素未被包含在transition中,所以当然过渡无效。并不是我一开始以为的transition需要包裹根元素或者CSS层级的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值