小程序navigateTo新打开多个同一路由页面返回的时候数据不正确
发布于 6 年前 作者 weixue 6760 次浏览 来自 问答

小程序navigateTo新打开多个同一路由页面,然后返回上一个页的时候,当前的页面表面数据是对的,貌似是缓存,但其实data记录的是刚打开多个页面,最后一个页面的数据,这时页面进行交互点击事件之类的 重新渲染就能看到

3 回复

navigateTo新打开多个同一路由页面=>这个操作是?

导致原因:

    页面 A、与页面 B 共享同一个 Page 实例导致的

目前尝试过两种不是很好的解决办法:

第一种:    修改 `Data` 数据结构,用商品的 `goodsId` 值作为 key,如下

```

data = {

    Data: {

    [goodsId_A]: ‘’,

    [goodsId_B]: ‘’,

    // …

  }

}

```

第二种: 从页面参数中取goodsId,在onshow中做更新

```

onShow() {

    const currentPages = getCurrentPages() || [] // eslint-disable-line

    const { options } = currentPages[currentPages.length - 1] || {}

    let { goodsId = ‘’} = options

    this.goodsId = goodsId

    this.$apply()

}

```

navigateTo需要带上商品id,每次打开的时候需要根据商品id重新去接口取数据放入setData,重新渲染

回到顶部