我正在使用React/Flux项目中的丙氨酸氨基转移酶库来表示Flux部分,并开始执行创建器的操作。
我创建了以下操作:
// 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。
发布于 2016-04-16 13:05:26
我不知道Alt的实现最近是否发生了变化,但为了使其正常工作,我不得不手动编写带有调度的操作代码,并直接调用这些函数,而不是尝试使用actions属性访问它们。
这是我得到的代码,它可以成功地加载到存储和映射操作的方式上。
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)。
此处分派的操作,getUsersSuccess和getUsersFail,应该在存储中有相应的操作,它们消耗参数/参数并影响状态。
发布于 2016-07-05 13:01:54
不再需要使用操作,请尝试:
// 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);https://stackoverflow.com/questions/36662868
复制相似问题