能否增加一个wxml绑定globalData的功能?
发布于 5 年前 作者 blei 1488 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

使用 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

/* action.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() ,但是大致的功能设想就是以上了。

5 回复

有了一个简易的 mobx ,让跨页面状态管理更加便捷,会极大的提高开发体验,这样就让程序员们更快的开发出 bug 更少的小程序,让小程序的推广更加迅速,让微信赚到更多钱,让腾讯的股票上升,然后腾讯就会给小程序的开发团队发更多的钱

我们已有相关特性的设计讨论。之后可以关注一下基础库或者 github/wechat-miniprogram 的更新。

解决这个问题有个终极大招。。。就是。。。

我们已经用mbox了。。。

这个你可以考虑通过全局store给页面注入数据来再在Page内setData来实现。

这个提议不错哦

回到顶部