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 uniapp的websocket和c++的websocket服务器通讯 发送的数据和接受的数据表现形式不一样
  • ¥15 pyspark配置中的错误
  • ¥15 html word表格
  • ¥15 kali安装包如何解决,请给明确方案和步骤
  • ¥15 DEA软件进行企业创新效率的计算
  • ¥15 树莓派驱动42步进电机
  • ¥20 bevfusion mit可视化遇到的问题
  • ¥15 如何获得《人工智能工程技术人员》认证?
  • ¥100 悬赏破解EFS加密,速度
  • ¥30 用MATLAB画随t变化的函数图像,式中包含了累加求和,出现报错,不知道怎么办了,请解释一下