4

React.js と Reflux を使用してアプリを構築していますが、コンポーネントがストアをリッスンするのに問題があります。

まず、次のように、ストアとイベントを正常にリンクしました。

コンポーネントはアクションをストアに送信します:

var CalcRow = React.createClass({
  handleChange: function(){
        // links to action in store.js
        TodoActions.costChange();
  },
  render: function() {
        return(// redacted)
    }
});

アクション:

global.TodoActions = Reflux.createActions([
    "costChange"  // called by individual cost item input    
]);

アクションを受け取るストア:

global.todoListStore = Reflux.createStore({

    listenables: [TodoActions],
    onCostChange: function(){
        alert('test1');
    }
});

ストアを購読/リッスンするコンポーネント

var CalcApp = React.createClass({
    mixins: [Reflux.listenTo(todoListStore,"onStatusChange")],
    onStatusChange: function() {
        alert('test2');
    },
        getInitialState: function(){
            return{
                      cat1: this.props.cat1
                  };
         },
  render: function() {
    return (// redacted)
  }
});

最初のコンポーネント (CalcRow) をそのストアに接続し、アラート ('test1') をトリガーすることはできますが、CalcApp に todoListStore をリッスンさせてアラート ('test2') を発生させることに成功していません。

公式のReflux docsを読みましたが、CalcApp が期待どおりに todoListStore をリッスンしないため、不足しているものがあるようです。

これ(CalcApp)がRefluxストア(todoListStore)をリッスンする方法について誰かが洞察していますか?

4

1 に答える 1

6

あなたの店は何も排出しません。あなたは呼び出す必要がありますthis.trigger

global.todoListStore = Reflux.createStore({

    listenables: [TodoActions],
    onCostChange: function(){
        this.trigger('test1');
    }
});

ドキュメント

于 2015-05-30T00:54:49.510 に答える