【问题标题】:react native alt flux cannot bind action to store反应原生 alt 助焊剂无法将动作绑定到存储
【发布时间】:2016-04-23 22:43:53
【问题描述】:

我有一个如下所示的 LoginActions.js 文件:

'use strict';

import alt from '../alt';
import LoginUtils from '../utils/login';

class LoginActions {

  loginSuccess(me) {
    return me;
  }

  loginFailed(err) {
    return err;
  }

  loginCancelled() {
    return function (dispatch) {
      dispatch()
    }
  }

  logout() {
    return function (dispatch) {
      dispatch()
    }
  }

  login() {
    return (dispatch) => {
      dispatch()
      LoginUtils.facebook((err, me) => {
        if (err === 'cancelled') {
          return this.loginCancelled();
        }
        if (err) {
          return this.loginFailed(err);
        }
        this.loginSuccess(me);
      });
    }
  }
}

export default alt.createActions(LoginActions);

还有一个看起来像这样的商店:

'use strict';

import alt from '../alt';
import _ from 'lodash';

import LoginActions from '../actions/LoginActions';
// import MeActions from '../actions/MeActions';
import CachedStore from './CachedStore';

class MeStore extends CachedStore {

  constructor () {
    super();

    this.me = {};

    this.bindListeners({
      handleLoginSuccess: LoginActions.LOGIN_SUCCESS,
      handleLoginFailed: LoginActions.LOGIN_FAILED,
      handleLogout: LoginActions.LOGOUT,
      handleLogin: LoginActions.LOGIN,
      handleLoginCancelled: LoginActions.LOGIN_CANCELLED
    });
  }

... // all handlers are defined here

但是,我不明白为什么会出现以下错误... 我按照这里解释的步骤操作:https://github.com/goatslacker/alt

【问题讨论】:

    标签: javascript react-native flux


    【解决方案1】:

    好的,所以我通过删除 LoginActions.js 文件并从头开始创建一个完全相同的新文件来让它工作......但无法解释为什么它不起作用。

    【讨论】:

      【解决方案2】:

      你为什么用handleLoginSuccess: LoginActions.LOGIN_SUCCESS, 当您在 Actions 中登录成功的函数名称是 loginSuccess 时?

      试试handleLoginSuccess: LoginActions.loginSuccess

      【讨论】:

      • 我也试过了,还是不行。我在另一个应用程序中使用 LOGIN_SUCCESS 语法完成了它,它运行良好,我不明白为什么它在这里不起作用。但错误似乎在 LoginActions 导入中。据我了解,LoginActions 似乎未定义。
      • 我的 alt.js 文件看起来像 import Alt from 'alt'; export default new Alt(); 而不是 export default alt.createActions(LoginActions); 我正在使用 module.exports.LoginActions = alt.createActions(LoginActions); 并且在商店中我正在以这种方式导入操作 import {LoginActions} from '../actions/loginactions'; 我也遇到了没有{}的问题围绕 LoginActions
      • 我试过module.exports.LoginActions = alt.createActions(LoginActions);import {LoginActions} from '../actions/loginactions'; 但我得到了同样的错误。它可能与 babel 编译器有关吗?我之前遇到过问题,也许我错过了集成预设或插件...
      猜你喜欢
      • 2016-08-12
      • 2016-03-12
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多