首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alt通量作用:即使调用了_this.actions,也未定义this.generateActions

Alt通量作用:即使调用了_this.actions,也未定义this.generateActions
EN

Stack Overflow用户
提问于 2016-04-16 10:21:51
回答 2查看 676关注 0票数 1

我正在使用React/Flux项目中的丙氨酸氨基转移酶库来表示Flux部分,并开始执行创建器的操作。

我创建了以下操作:

代码语言:javascript
复制
// alt.js
import Alt from 'alt';

export default new Alt();

// UserActions.js
import alt from '../alt';

class UserActions {
    constructor() {
        this.generateActions(
            'getUsersSuccess',
            'getUsersFailed'
        );
    }

    getUsers(userId) {
        $.ajax({ url: '/api/users/'+userId })
        .done((data) => {
            this.actions.getUsersSuccess(data);
        })
        .fail((jqXhr) => {
            this.actions.getUsersFailed(jqXhr);
        });
    }
}

export default alt.createActions(UserActions);

问题是动作,this.actions,是未定义的。我是否正确地理解了this.generateActions函数应该填充UserActions类的actions属性,还是需要编写其他东西才能使操作可用?

我认为,使用ES6,匿名函数中的this应该正确地绑定到UserActions类的this

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-16 13:05:26

我不知道Alt的实现最近是否发生了变化,但为了使其正常工作,我不得不手动编写带有调度的操作代码,并直接调用这些函数,而不是尝试使用actions属性访问它们。

这是我得到的代码,它可以成功地加载到存储和映射操作的方式上。

代码语言:javascript
复制
import alt from '../alt';

class UserActions{
    getUsers(userId) {
        $.ajax({url: 'api/users/'+userId})
            .done((data) => {
                this.getUsersSuccess(data);
            })
            .fail((jqHxr) => {
                this.getUsersFail(jqHxr);
            });
        return false;
    }

    getUsersSuccess(data) {
        return (dispatch) => {
            dispatch(data);
        }
    }

    getUsersFail(jqHxr) {
        return (dispatch) => {
            dispatch(jqHxr);
        }
    }
}

export default alt.createActions(UserActions);

使用这种方法,构造函数中的generateActions调用不仅是不必要的,而且需要避免,否则使用此操作创建者的存储将不知道要使用哪个操作。

我还在return false函数的末尾添加了getUsers,以抑制alt引发的控制台警告(当函数不调度时必须返回false)。

此处分派的操作,getUsersSuccessgetUsersFail,应该在存储中有相应的操作,它们消耗参数/参数并影响状态。

票数 2
EN

Stack Overflow用户

发布于 2016-07-05 13:01:54

不再需要使用操作,请尝试:

代码语言:javascript
复制
// alt.js
import Alt from 'alt';
export default new Alt();

// UserActions.js
import alt from '../alt';

class UserActions {
    constructor() {
        this.generateActions(
            'getUsersSuccess','getUsersFailed'
        );
    }

    getUsers(userId) {
        $.ajax({ url: '/api/users/'+userId })
        .done((data) => {
            this.getUsersSuccess(data);
        })
        .fail((jqXhr) => {
            this.getUsersFailed(jqXhr);
        });
    }
}
export default alt.createActions(UserActions);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36662868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档