同路径页面多次打开数据覆盖
发布于 5 年前 作者 xiulanding 3570 次浏览 来自 问答

第一个页面/pages/pageOne中有一个按钮,navigateTo到第二个同一路径/pages/pageOne页面,数据重新请求,由于页面栈内为同一个,会把第一个页面的数据替换,再返回第一个页面时,第一个页面的数据全部变为第二个页面的数据,发生数据冲突,请问有办法解决吗?

4 回复

你好 我也出现类似问题。你怎么解决的

回复所有关注此问题的开发者:

1、在B页面设置A页面的需要刷新参数:

var pages = getCurrentPages();

var prevPage = pages[pages.length - 2];

prevPage.setNeedRefresh(true);

2、在A页面的onShow()方法中判断是否需要刷新

导致原因:

    页面 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()


}

```

第一个页面的数据全部变为第二个页面的数据 能具体描述下吗

回到顶部