收藏
回答

同路径页面多次打开数据覆盖

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 6.7.2 2.2.2

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

回答关注问题邀请回答
收藏

4 个回答

  • 晨
    2018-08-23

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

    2018-08-23
    有用
    回复 2
    • xixi
      xixi
      2018-08-30

      比如第一次进页面,路径为‘/pages/index?id=1234’,有个参数id为1234,this.id=1234,页面内有个按钮跳转到‘/pages/index?id=4321’,this.id=4321。同时上一个页面的id也成了4321,所以点击返回按钮的时候,页面内的id字段不是1234

      2018-08-30
      回复
    • 刻于新月之铭
      刻于新月之铭
      2018-12-21

      问题解决了吗,遇到相同问题

      2018-12-21
      回复
  • xixi
    xixi
    2019-08-21

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

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

    var pages = getCurrentPages();

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

    prevPage.setNeedRefresh(true);

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

    2019-08-21
    有用
    回复
  • 2019-02-26

    导致原因:

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


    }

    ```


    2019-02-26
    有用
    回复 1
    • 2019-02-26

      如果有好的办法,欢迎补充

      2019-02-26
      回复
  • 纳爱斯
    纳爱斯
    2018-12-05

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

    2018-12-05
    有用
    回复
登录 后发表内容