Hi_Jacky123 2022-10-06 17:18 采纳率: 77.8%
浏览 23
已结题

小程序全局数据共享,如何调用共享的字段和方法?

在刚开始学习全局数据共享时,就有一个疑问,今天一实践果然还是有问题:在store.js中定义了字段和方法,在页面中使用时不识别,字段是“not defined”,方法是“not a function”。
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

Page({

    data: {

    },
    onLoad: function (options) {
        this.storeBindings = createStoreBindings(this, {
        store,
        fields: ['num1', 'num2', 'sum'],
        actions: ['updateNum1']
        })
    },

    btnHandler1(e) {

        this.updateNum1(e.target.dataset.step)
    },

    onUnload: function () {
        this.storeBindings.detroyStoreBindings()
    }
})

就比如以上的代码,最常见的例子。在页面onLoad()中的 this.storeBindings中,引用了actions: ['updateNum1'],但是这个updateNum1并没有声明啊,在下面的 btnHandler1(e)怎么能直接引用呢?反正我的不出意外报错“updateNum1 is not a function”。不仅在onLoad()之外我的报错,在onLoad() 之内也报错,因为它在createStoreBindings(this, {}中的呀。

不仅如此,字段也是一样,fields: ['num1', 'num2', 'sum']这三个字段全部报错:“…is not defined”

谁知道如何解决?
  • 写回答

3条回答 默认 最新

  • Hi_Jacky123 2022-10-06 19:34
    关注

    哎呀不好意识,占用大家时间了,问题已经搞明白了。
    1:我自己的代码中,把actions: ['updateNum1']写成了action,少了一个“s”,导致.js中使用时报错:updateNum1 is not a function。
    2:对fields: ['num1', 'num2', 'sum']中的对象,赋值后在wxml页面中使用{{num1}}正常使用。在.js中如何使用呢,我想了个办法,在store中再写一个actions,把值返回来:return this.num1,然后在.js中调用该函数,就拿到了num1的值。
    特此留言。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)