关于小程序:一个你想不到的小程序数组更新方式

1次阅读

共计 902 个字符,预计需要花费 3 分钟才能阅读完成。

首先这里不得不吐槽下小程序的数组更新,间接通过 setData 替换整个数组只在开发者工具上有成果,放到真机上就齐全失灵,这是一件很蛋疼的事件,不晓得小程序官网团队的更新机制是什么,也没有去细看,猜想可能与援用类型有关系。

看了网上大都是指定批改数组对象里的某个元素值,如这样:

Page({
    data: {list: [{name: 'tom'}]
    },
    onLoad() {this.setData({[`list[0].name`]: 'jack'})
    }
})

PS:感觉这样解决十分麻烦,须要一个个遍历去解决,而且新数组与旧数组的长度可能还不一至,还要比照,想想就放弃了,也没真正测试进去成果来。

因为要做的是一个简略的页面,只有地图和列表,所以就另辟蹊径通过 redirectTo 去解决了,其就是想通过刷新页面去实现视图更新的,因为小程序没有间接的刷新页面 API,所以就想着通过 reLaunchredirectTo 间接实现,不过 reLaunch 没成果,所以就确定了 redirectTo 加上参数实现的视图更新,说到这,其实这个和数组更新没有关系了,不过这的确是因为数组更新没成果引起的血案,只能通过其余形式来救场,相应的示例代码:

Page({
    data: {
        activeTab: '',
        list: []},
    onLoad(options) {if(options.tab) {this.setData({activeTab: options.tab})
        }
        this.getList()},
    changeTab(e) {wx.redirectTo({url: `/pages/index/index?tab=${e.currentTarget.dataset.tab}`})
    },
    getList() {
        wx.request({
            url: 'xxx',
            data: {tab: this.data.activeTab},
            success: res => {this.setData({list: res.data})
            }
        })
    }
})

最初尽管问题侧面解决了,但这不是正规的解决形式,而且有场景限度,所以还是心愿官网看看是否优化数组的更新机制。

更多前端常识,请关注小程序,不定期有惊喜!

正文完
 0