收藏
回答

setStorageSync 在B页面存储一条对象 在A取出这条对象添加到A页面的数组中?

setStorageSync

在B页面存储一条对象

....

var item={user:'123',name:'李四'}

wx.setStorageSync('item',item)

...


在A页面取出这条对象添加并到A页面的数组中,

.....

var list =[]

          var item=wx.getStorageSync('item')||''

          if(item){

            list.push(item)

          }

....

返回B页面继续存储一条新的对象,

...

          var item={user:'456',name:'张三'}

          wx.setStorageSync('item',item)

          ...


在回到A页面取出这条对象添加到上次操作的数组中,

...

          var item=wx.getStorageSync('item')||''

          if(item){

            list.push(item)

          }

          ...


结果 数组长度不变,第一次添加到数组中的数据被第二次添加的数据替换了

 ...

          list={user:'456',name:'张三'} ]

          ...


问题 怎么实现 添加而不是替换

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

4 个回答

  • 拾忆
    拾忆
    2020-12-06

    B页面存储之前getStorageSync一下,然后新增的push进去

    2020-12-06
    有用 1
    回复 1
    • mjd
      mjd
      2020-12-06
      是这样?
      2020-12-06
      回复
  • brave
    brave
    2020-12-06

    为什么不在一开始就把数组设置到缓存里,那么你在A页面获取的时候,就是

    let list = wx.getStorageSync("item", item);

    B页面

    let list = wx.getStorageSync("item");

    list.push({user:'456',name:'张三'});

    wx.setStorageSync("item", list);

    2020-12-06
    有用 2
    回复 3
    • mjd
      mjd
      2020-12-06
      这个思路不错;
      当初是这么想的,每次存取数组,数据少一点还行,数据太多了会影响到程序的运行速度、和性能吧,对象可能会好多了。
      2020-12-06
      回复
    • brave
      brave
      2020-12-06回复mjd
      我大概能猜到你这个需求是,A页面追加B页面新添加的数据,下次启动或者重启小程序时并不需要之前的旧数据,那么你也可以用getCurrentPages获取到A页面,直接setData新的数据给A页面的data,A页面也不用执行多次逻辑。
      如果你是需要保存在本地,以后还需要读取的,那么你放到缓存里得是一个数组
      2020-12-06
      回复
    • mjd
      mjd
      发表于移动端
      2020-12-06回复brave
      哦,好的,懂了。谢谢了
      2020-12-06
      回复
  • Cjiang
    Cjiang
    2020-12-06

    B页面先getStorageSync旧的数据,再push后setStorageSync。

    2020-12-06
    有用 1
    回复
  • Danfeng Cui
    Danfeng Cui
    2021-06-02

    不是替换了,是你原来的list中的数据没了。

    2021-06-02
    有用
    回复
登录 后发表内容
问题标签