- 需求的场景描述(希望解决的问题)
使用 globalData 跨页面共享数据时,每次都要在页面的 data 中从 globalData 复制一份,而且更新页面数据时也要修改 globalData ,造成页面逻辑和全局的逻辑耦合。
如果 globalData 中的数据能直接绑定到 wxml ,那么也就相当于有了一个简易的 mobx ,让跨页面状态管理更加便捷,会极大的提高开发体验,这样就让程序员们更快的开发出 bug 更少的小程序,让小程序的推广更加迅速,让微信赚到更多钱,让腾讯的股票上升,然后腾讯就会给小程序的开发团队发更多的钱。
- 希望提供的能力
wxml 能够绑定 globalData ,这样就能将 globalData 作为一个全局的状态 store 来使用了。
wxml 中用 $global 来表示绑定 globalData 。getApp().setGlobalData({ prop: value }) 来设置 globalData ,触发页面更新,下面是我设想的代码示例:
wxml
<!-- index.wxml --> < view > {{$global.name}} </ view > |
js
import * as api from '../../api.js' // 修改名称 export const updateUsername = name => api.updateUsername(name).then(({ statusCode }) => { getApp().setGlobalData({ name }) }) // 获取名称 export const getUsername = () => api.getUsername().then(({ data: { name } }) => { getApp().getGlobalData({ name })
|
当然,为了少打几个字,不一定要 $global ,选个简短一点的 $g 也可以;getApp().setGlobalData 也可以用 getApp().setData() ,但是大致的功能设想就是以上了。