wechat-miniprogram / mobx-miniprogram-bindings

小程序的 MobX 绑定辅助库
MIT License
206 stars 20 forks source link

createStoreBindings 加完成后的Promise回调 #17

Closed callmesoul closed 2 years ago

callmesoul commented 3 years ago

在几个小程序里面用了mobx-miniprogram-bindings 发现有时createStoreBindings调用后还没把semesters绑定就执行后面的方法了

data:{
 semesters: []
},
onLoad: async function (options) {
        createStoreBindings(this, {
            store,
            fields: ['semesters']
        })
        wx.nextTick(async () => {
            console.log(this.data.semesters)  // 有时是全局的 semesters,有时事本页面测初始值 []
        })
    },

感觉封装个promise回调会好点

LastLeaf commented 3 years ago

调查了一下发现加上也不是很合适。直接加个 updateStoreBindings 调用如何?

this.storeBindings = createStoreBindings(this, {
    store,
    fields: ['semesters']
})
this.storeBindings.updateStoreBindings()
console.log(this.data.semesters)

另外,现在直接使用 storeBindingsBehavior 比较好, Page 构造器也可以用了。它会自动调用 updateStoreBindings ,省去了很多麻烦。