小程序
小游戏
企业微信
微信支付
扫描小程序码分享
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我也遇到过相同问题,也考虑过浅拷贝问题,应该不是,应该是setData这个函数问题,真是蛋疼,我现在使用本地缓存来解决问题。多谢指教
贴点代码:
<pre>if (is_date_tab_dat) {
console.log('是日期选项卡产品:', is_date_tab_dat);
let d_s_key = so.s_key,
tabs = this.data.tabList,
tab_idx = tabs.findIndex((item) => item.s_str === d_s_key),
tab_o = (tab_idx >= 0) ? tabs[tab_idx] : null,
new_tabs = tabs;
console.log('当前选项卡:', tabs, tab_o, tab_o.products);
if (tab_o && !tab_o.products) {
//保存到本地缓存
var ls_tabs = wx.getStorageSync('LastDateTabList');
if (!!ls_tabs && !!ls_tabs.tabs_arr && !!ls_tabs.tabs_arr[tab_idx] && !ls_tabs.tabs_arr[tab_idx].products) {
console.log('set_local_storge_products_290:', ls_tabs.tabs_arr, ls_tabs.tabs_arr[tab_idx], result_products);
ls_tabs.tabs_arr[tab_idx].products = result_products;
wx.setStorageSync('LastDateTabList', {
'get_time_stamp': Date.now(),
'tabs_arr': ls_tabs.tabs_arr,
});
new_tabs = ls_tabs.tabs_arr;
} else if (!ls_tabs) {
'tabs_arr': tabs
} else {
console.log('本地缓存[LastDateTabList]异常:', ls_tabs);
}
this.setData({
tabList: new_tabs,
//下拉刷新数据应该在这里处理
/* tab_o.products = result_products;
tabs[tab_idx] = tab_o;
console.log('set_products_282:', tabs, tabs[tab_idx], tab_o, result_products);
++set2;
console.log('set_tabs_list_products2:', set2, tab_idx);
tabList: tabs,
}); */
}</pre>
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
猜测应该是所有数组中该对象指向同一内存地址,导致值改了之后,所有都改了
这个问题,解决了吗? 我也遇到相同的问题,很是头疼
贴代码出来
应该是浅拷贝的问题
点开看看 里面到底什么数据结构
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我也遇到过相同问题,也考虑过浅拷贝问题,应该不是,应该是setData这个函数问题,真是蛋疼,我现在使用本地缓存来解决问题。多谢指教
贴点代码:
<pre>if (is_date_tab_dat) {
console.log('是日期选项卡产品:', is_date_tab_dat);
let d_s_key = so.s_key,
tabs = this.data.tabList,
tab_idx = tabs.findIndex((item) => item.s_str === d_s_key),
tab_o = (tab_idx >= 0) ? tabs[tab_idx] : null,
new_tabs = tabs;
console.log('当前选项卡:', tabs, tab_o, tab_o.products);
if (tab_o && !tab_o.products) {
//保存到本地缓存
var ls_tabs = wx.getStorageSync('LastDateTabList');
if (!!ls_tabs && !!ls_tabs.tabs_arr && !!ls_tabs.tabs_arr[tab_idx] && !ls_tabs.tabs_arr[tab_idx].products) {
console.log('set_local_storge_products_290:', ls_tabs.tabs_arr, ls_tabs.tabs_arr[tab_idx], result_products);
ls_tabs.tabs_arr[tab_idx].products = result_products;
wx.setStorageSync('LastDateTabList', {
'get_time_stamp': Date.now(),
'tabs_arr': ls_tabs.tabs_arr,
});
new_tabs = ls_tabs.tabs_arr;
} else if (!ls_tabs) {
wx.setStorageSync('LastDateTabList', {
'get_time_stamp': Date.now(),
'tabs_arr': tabs
});
} else {
console.log('本地缓存[LastDateTabList]异常:', ls_tabs);
}
this.setData({
tabList: new_tabs,
});
//下拉刷新数据应该在这里处理
/* tab_o.products = result_products;
tabs[tab_idx] = tab_o;
console.log('set_products_282:', tabs, tabs[tab_idx], tab_o, result_products);
++set2;
console.log('set_tabs_list_products2:', set2, tab_idx);
this.setData({
tabList: tabs,
}); */
}
}</pre>
猜测应该是所有数组中该对象指向同一内存地址,导致值改了之后,所有都改了
这个问题,解决了吗? 我也遇到相同的问题,很是头疼
贴代码出来
应该是浅拷贝的问题
点开看看 里面到底什么数据结构