Error: Expect END descriptor with depth
发布于 7 年前 作者 ping83 2465 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

Error: Expect END descriptor with depth 0 but get another

  • 预期表现

不会出错

  • 复现路径

Index页面结构:

– CompA

—  CompB

场景:

CompA的wx:if由Index决定

CompB的wx:if由CompA决定

如果CompA关闭了,但是CompB的wx:if条件还在执行 =》 触发Bug

真实场景就是

CompA在2s会显示CompB的内容

但是如果CompA2s以内被关了,那么CompB就出错

详见代码片段

  • 提供一个最简复现 Demo

自行代码片段

2 回复

A组件卸载了再去调用 this 当然是有问题的,你代码片段里的写法可以改用这两个生命周期方法:

attached() {
    this.timer = setTimeout(() => {
      this.setData({
        comp_b_show: true
      })
    }, 2000)
  },
detached() {
  clearTimeout(this.timer)
}

我先来一个临时的解决办法吧

既然我们知道如果CompB的wx:if判断时候CompA已经卸载了,那么就会出现Bug。

那我们就可以在CompB的wx:if里多一个判断,判断CompA是否被卸载

如何判断?

只要在CompA的attached生命周期和dettached生命周期里设置一个开关就行,亲测可以临时解决

更粗暴一点?

如果CompA有引用组件,组件的父层(不限层级)有wx:if

那么,我们在CompA的最顶层进行判断就可以

只不过,作为临时方法,非常的不友好

回到顶部