第一个页面/pages/pageOne中有一个按钮,navigateTo到第二个同一路径/pages/pageOne页面,数据重新请求,由于页面栈内为同一个,会把第一个页面的数据替换,再返回第一个页面时,第一个页面的数据全部变为第二个页面的数据,发生数据冲突,请问有办法解决吗?
回复所有关注此问题的开发者:
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()
}
```