1

我正在尝试在我的 React 应用程序中实现 Alt。目前我正在检查它,只是按照教程尝试了一些事情。现在我遇到了商店无法识别动作的问题。

这是动作类:

import alt from '../libs/alt';
import WishSource from '../sources/WishSource';

class WishActions {
  fetchWishes() {
      this.dispatch();
      WishSource.fetch()
        .then((wishes) => {
          this.actions.fetchWishesSuccess(wishes);
        })
        .catch((err) => {
          this.actions.fetchWishesFailed(err);
        });
  }
  fetchWishesSuccess(wishes) {
    this.dispatch(wishes);
  }
  fetchWishesFailed(err) {
    this.dispatch(err);
  }
}
export default alt.generateActions(WishActions);

我尝试在我的商店中绑定这些操作,如下所示:

import alt from '../libs/alt';
import WishActions from '../actions/WishActions';

class WishStore {
  constructor() {
    this.wishes = [];
    this.errorMessage = null;

    this.bindListeners({
        handleFetchWishes: WishActions.FETCH_WISHES,
        handleFetchWishesSuccess: WishActions.FETCH_WISHES_SUCCESS,
        handleFetchWishesFailed: WishActions.FETCH_WISHES_FAILED
    });
  }
  handleFetchWishesSuccess(wishes) {
    this.wishes = wishes;
    this.errorMessage = null;
  }
  handleFetchWishes() {
    this.wishes = [];
  }
  handleFetchWishesFailed(err) {
    this.errorMessage = err; 
  }
}

export default alt.createStore(WishStore, 'WishStore');

我一直给我错误

'传入的操作引用无效'

问题出在 bindListeners 函数中。

如果我尝试 bindActions 它说:

'_WishActions2.default.fetchWishes 不是函数'

这是在视图中。WishActions.fetchWishes()我在这里调用componentDidMount()

我无法理解这里出了什么问题。如果我查看教程和其他示例,这应该可以。

有人可以在这里帮助我,也许可以解释一下出了什么问题?

4

1 回答 1

3

我发现出了什么问题,并将在此处留下帖子,以防其他人遇到同样的事情。

问题是我使用了 generateActions 而不是 createActions。您将 createActions 用于类,将 generateActions 用于简单函数。

generateActions('create') 将创建一个函数 create = (x) => { return x; } 并发送它。您仍然可以在您的类中使用 this 在构造函数中使用 this.generateActions

于 2016-01-21T21:25:46.227 回答