老师你好,我遇到一个报错被卡住了,需要您的帮助

来源:9-10 MobX 实践 SDK 登陆、下线状态管理

精慕门0241520

2022-04-28

图片描述
我的tim.js代码

import { action, observable } from 'mobx-miniprogram'
import Tim from "../model/tim";
import TIM from "tim-wx-sdk-ws"

export const timStore=observable({
    //字段
    sdkReady:false,

    //actions
    login:action(function (){
        this._runListener()    
        Tim.getInstance().login()  
    }),

    _runListener(){
        const sdk=Tim.getInstance().getSDK()  
        sdk.on(TIM.EVENT.SDK_READY,this._handleSDKReady,this) 
        sdk.on(TIM.EVENT.SDK_NOT_READY,this._handleSDKNotReady,this)  
        sdk.on(TIM.EVENT.KICKED_OUT,this._handleSDKNotReady,this)
    },

    _handleSDKReady(){
        this.sdkReady=true
    },

    _handleSDKNotReady(){
        this.sdkReady=false
    },
})

我的conversation部分代码


import Tim from "../../model/tim";
import TIM from "tim-wx-sdk-ws";
import { timStore } from "../../store/tim";
import { createStoreBindings } from "mobx-miniprogram-bindings";

Page({
  /**
   * 页面的初始数据
   */
  data: {},

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.storeBindings = createStoreBindings(this, {
      store: timStore,
      fields: ["sdkReady"], //1.需要绑定的字段 2.这个sdkReady会绑定到data{}里去
      action: ["login"], //需要绑定的操作和方法
    });
    this.login()
  },
  
});

现在this.login部分一直编译通不过,如果注释掉这一段就没有问题,说明问题应该是出在this.login,请老师协助,感谢

写回答

1回答

沁尘

2022-04-28

createStoreBindings本身是个异步的操作,而且出于性能考虑,不会马上对当前页面或者组件做绑定。

你这里调用 this.login 实际还没有完成绑定。

0
2
沁尘
actions,拼写错了
2022-04-29
共2条回复

《慕慕到家》家政小程序组件化进阶实战-优质项目

千锤百炼的实践分享,成就你独当一面

494 学习 · 306 问题

查看课程