javascript - Reflux 存储不听 Action

标签 javascript reactjs reactjs-flux refluxjs

编辑:

我现在觉得很傻。 问题是我在代码中的任何地方都不需要我的商店,所以它从未真正被创建。

当我调用它正在监听的操作时,我的 refluxjs 商店没有调用它的回调。相关代码如下:

Action :

module.exports = require("reflux").createActions([
    "createUser"
]);

商店:

var userActions = require("../actions/user-actions");

module.exports = require("reflux").createStore({
    listenables: userActions,

    onCreateUser: function() {
        console.log("onCreateUser called", arguments);
    }
});

触发 Action 的组件:

var React = require("react"),
    userActions = require("../../actions/user-actions");

var Login = React.createClass({
    getInitialState: function() {
        return {
            name: ""
        };
    },

    updateName: function(event) {
        this.setState({
            name: event.target.value
        });
    },

    // Action gets called here
    submit: function(event) {
        event.preventDefault();
        console.log("Creating user", this.state.name);
        userActions.createUser(this.state.name);
    },

    render: function() {
        var name = this.state.name;

        return (
            <div className='login'>
                <form onSubmit={this.submit}>
                    <input value={name} onChange={this.updateName} />
                    <button>Create</button>
                </form>
            </div>
        );
    }
});

当我在 Login 组件中提交表单时,submit 方法被调用而没有抛出任何错误,但是我的 onCreateUser 方法商店永远不会被调用。

回流 github 页面上的示例看起来相当简单,这与在商店中使用 listenables 属性的示例几乎完全相同。

如有任何帮助,我们将不胜感激。

最佳答案

由于商店通常连接到一个组件,并且以这种方式被要求,您可以创建一个只注销到控制台的测试组件:

var store = require('path/to/your/store'),
    React = require('react'),
    Reflux = require('reflux');

var ConsoleLogComponent = React.createClass({
    mixins: [ 
        Reflux.listenTo(store, "log")
        // you may add more stores here that calls the log method
    ],
    log: function() {
        console.log(arguments);
    },
    render: function() {
        return <div />
    }
});

然后,您可以将此控制台组件放在任何地方,只需对商店进行健全性检查即可。

关于javascript - Reflux 存储不听 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870840/

相关文章:

javascript - 剩余的 Bootstrap 模态背景

JavaScript 运行时错误 : '$' is undefined

Javascript,传递鼠标事件

css - 如何在 React Js 中为不同的布局管理不同的 css 样式?

javascript - FluxJS 中常见组件的不同操作

javascript - 单击 div 以使用 jquery 将填充添加到另一个 div

javascript - mobx 商店更改后更新选项卡导航器上的徽章

javascript - React.js & Flux - 哪里是注册 Websocket 事件(接收数据)的最佳位置

javascript - 组件应该在什么嵌套级别从 Flux 中的 Stores 读取实体?

reactjs - 无法解析模块 'react' 的路径。 (导入/没有-未解决)