Taro 开发小程序中的无感刷新以及设置全局变量
1.无感刷新(类似于keep-alive)
在订单列表页面进入到订单详情页面之后,在详情页面进行了取消订单或者发货等操作,之后返回到订单详情页面。回退到订单列表页面实现无感刷新。
问题:这里直接刷新页面的话,第一页的数据还好,但是如果操作的这笔订单在第2或者第20页,刷新页面的话重新获取数据的话就会回到第一页,操作之后就再去找这笔订单就很麻烦。
解决方法:在订单详情页面通过页面栈的方式实现,getCurrentPage将当前页面操作的数据传递到上一个页面(订单列表页面),返回到订单列表时获取到页面栈中的数据,根据页面栈中的数据在不刷新列表的情况下更新当前的数据。
2.Taro中如何像Vue中挂载全局变量(Vue.prototype.***)
通常我们设置一些全局的变量在整个项目中用。大的项目我们可以使用Redux、Vuex,但是小的项目你可能只需要在使用一两个全局变量,此时我们在Taro中如何像Vue一样设置全局变量呢。
解决方法:Taro编译配置详情文档 Taro中编译配置中有defineConstants用于配置一些全局变量供代码中进行使用。
3.两个列表的数据如何一一对应
如果后端给了你列表的数据,下一次需求的时候后端只在每一项数据中添加了一个字段,你需要通过这个字段去获取到相应的信息。这时候有个问题,如果每次一条数据都去调用一次接口,那调用的接口就太多了。列表数据很多,调用接口次数太多,服务器的压力大,前端渲染的效率也低。
解决方法:我们就需要批量查询接口,将当前页所有数据中的这个字段的值放入一个数组中进行去重再批量查询。将获取到的数组进行对象化。使用reduce方法直接写成对象。或者使用Map。key为列表中新增的字段,值为对应的对象数据。然后将列表中的数据通过对象的方式一一对应即可。