Dispatch不会立即更新组件

时间:2016-05-18 05:52:06

标签: javascript reactjs flux

参考我this教程后的参考资料。我的试用版应用是一款用户管理工具。目前显示以下用户列表的是商店代码。它使用dispatcher.dispatch({type: "CREATE_USER", name: "Andrew"})成功地将用户添加到列表中。但是,在我点击路线然后更新之前,它不会这样做。

    import { EventEmitter } from "events";

    import dispatcher from "../Dispatcher";

    class UserManagement extends EventEmitter{
        constructor(){
            super();
            this.users =
                [
                {
                    id: 1234,
                    name: 'Anton',
                    email: 'escalante.anton@outlook.com'
                },
                {
                    id: 12345,
                    name: 'Bacon',
                    email: 'bacon@me.com'
                }
                ];
        }
        getAll(){
            return this.users;
        }
        createUser(name){
            const id = Date.now();
            this.users.push({
                id,
                name,
                email: 'default@email.com'
            });
            this.emit("change");
        }

        handleActions(action){
            switch(action.type){
                case "CREATE_USER":{
                    this.createUser(action.name);
                    break;
                }
            }
        }
    }
    const userobj = new UserManagement;
    dispatcher.register(userobj.handleActions.bind(userobj));
    window.dispatcher = dispatcher;

    export default userobj;

编辑我认为我需要触发状态更改?

1 个答案:

答案 0 :(得分:0)

要重新渲染数据,您应该通过调用setState或使用forceUpdate强制渲染来触发渲染

请注意,forceUpdate 不推荐 ,组件读取存储数据的正确方法是将数据复制到状态并从render函数中的this.state中读取。

http://blog.andrewray.me/flux-for-stupid-people/