收藏
回答

能否增加一个wxml绑定globalData的功能?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 globalData 工具 6.7.3 2.4.3

- 需求的场景描述(希望解决的问题)

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

最后一次编辑于  2018-12-26
回答关注问题邀请回答
收藏

5 个回答

  • Eric Huang
    Eric Huang
    置顶回答2018-12-26

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

    2018-12-26
    有用 1
    回复 1
    • 🐱
      🐱
      2018-12-26

      谢谢你的建议。


      一个 Page 中可能会有很多个 data 属性,(假如有 8 个 data 属性)首先每个属性值在载入页面 setData 一次,然后在不同的方法中做了增删改都要 setData 一次,各种 setData 就会分布在 Page 的各个方法内,维护起来还是很麻烦的。如果模板能直接绑定 globalData ,那么我只需要在与后端交互的方法(自定义的 action.js)中调用一次 setGlobalData 就行了,Page 中就会比较干净,不会出现忘记 setData /忘记移除不用了的 setData /set 了错误的 Data 。


      不过 @LastLeaf 说已经在讨论相关特性了,期待基础库能尽快实现。


      2018-12-26
      回复
  • LastLeaf
    LastLeaf
    2018-12-26

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

    2018-12-26
    有用
    回复 1
    • 🐱
      🐱
      2018-12-26

      谢谢,期待基础库能早日实现。

      2018-12-26
      回复
  • 杨泉
    杨泉
    2018-12-26

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


    我们已经用mbox了。。。

    2018-12-26
    有用 2
    回复 1
    • 🐱
      🐱
      2018-12-26

      这么能折腾。。。

      2018-12-26
      回复
  • 鸡鸡鸡镜。
    鸡鸡鸡镜。
    2018-12-27

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

    2018-12-27
    有用 1
    回复
  • 2018-12-26

    这个提议不错哦

    2018-12-26
    有用 1
    回复 1
    • 🐱
      🐱
      2018-12-26

      谢谢支持😊

      2018-12-26
      回复
登录 后发表内容