【发布时间】:2020-01-30 07:46:02
【问题描述】:
我的 redux 操作有一个奇怪的问题。
我在同一个组件中有两个函数 A()、B(),它们调用一个动作函数 ac(),该函数使用 thunk 对服务器进行异步调用。
我使用 mapDispatchToprops 将 ac() 映射到组件。
当我调用 A() 时,它就像一个魅力,动作被调度并更新状态。但是,如果我调用 B(),它会以相同的方式调用相同的 ac(),则不会调度该操作。就好像我在调用一个普通函数,所以里面的 thunk 没有被执行。
我错过了什么吗?
编辑:generateAgreement() 有效,但 signAgreement() 无效,即使它们调用相同的操作 updateAgreements()
generateAgreement = async evt => {
evt.preventDefault();
const selectedAgreement = this.props.myAgreements[evt.target.id];
this.props.updateAgreements(
Object.assign(
{},
{
myAgreements: this.props.myAgreements,
selectedAgreement
}
),
this.props.user.token,
"generate-agreement",
{
agreementId: selectedAgreement.id
},
actionTypes.GENERATE_AGREEMENT
);
};
signAgreement = async evt => {
evt.preventDefault();
const selectedAgreement = this.props.myAgreements[evt.target.id];
this.props.updateAgreements(
Object.assign(
{},
{
myAgreements: this.props.myAgreements,
selectedAgreement
}
),
this.props.user.token,
"sign-agreement",
{
agreementId: selectedAgreement.id
},
actionTypes.SIGN_AGREEMENT
);
};
【问题讨论】:
-
邮政编码,A和B的叫法一定有区别
-
@RayWiis 发布了代码。谢谢!
-
如果
this没有绑定到其他东西似乎没问题,但是当您调用操作时只会给您一个错误。这可能有一些东西,不确定...... -
添加了一些控制台语句第一个函数的动作打印
ƒ () { return dispatch(actionCreator.apply(this, arguments)); }第二个函数的动作打印({ myAgreements }, token, api_url, reqBody, action_type) => async dispatch => { console.debug("executing update"); try { const result = await axios__WEBPACK_IMPORTED_MODULE_1___default.a.p…不知道为什么另一个函数的动作变成了普通函数
标签: reactjs redux react-redux redux-thunk