无法在另一个 Action 中调用 Action
Cannot call Action within another Action
我无法理解这种行为
我有一个这样定义的action
import { whatever } from './kitty';
export const onDone = foo => dispatch => {
whatever(foo);
dispatch({
type: ON_DONE,
});
};
和whatever()
是这样定义的
export const whatever = foo => dispatch => {
console.log('I DO NOT GET LOGGED');
dispatch({
type: DO_WHATEVER,
payload: foo
});
};
我希望whatever()
被执行,但没有。这是为什么?
这里onDone
和whatever
都不是“动作”,他们是“动作创造者”。它们是 return 一个动作的函数(在本例中为“thunk 动作”)。这里的动作是可以发送到 redux store 的东西。
他们是行动创造者意味着:如果你打电话给他们,你就会有一个行动,但这就像写一封信。你现在有一封信。在您实际使用它.
之前,它会一直在您的 table 上
你如何处理一个动作才能在 redux 中产生任何效果?您将它发送到商店。
因此您必须实际发送由您的 whatever
动作创建者创建的动作:
export const onDone = foo => dispatch => {
dispatch(whatever(foo));
dispatch({
type: ON_DONE,
});
};
PS:另一个答案建议调用 whatever(foo)(dispatch)
。虽然 技术上 有效并且是 redux-thunk 中间件内部工作的一部分,但它不适合 redux 数据流模型并且不是库作者的预期使用方式.请不要这样做。
我无法理解这种行为
我有一个这样定义的action
import { whatever } from './kitty';
export const onDone = foo => dispatch => {
whatever(foo);
dispatch({
type: ON_DONE,
});
};
和whatever()
是这样定义的
export const whatever = foo => dispatch => {
console.log('I DO NOT GET LOGGED');
dispatch({
type: DO_WHATEVER,
payload: foo
});
};
我希望whatever()
被执行,但没有。这是为什么?
这里onDone
和whatever
都不是“动作”,他们是“动作创造者”。它们是 return 一个动作的函数(在本例中为“thunk 动作”)。这里的动作是可以发送到 redux store 的东西。
他们是行动创造者意味着:如果你打电话给他们,你就会有一个行动,但这就像写一封信。你现在有一封信。在您实际使用它.
之前,它会一直在您的 table 上你如何处理一个动作才能在 redux 中产生任何效果?您将它发送到商店。
因此您必须实际发送由您的 whatever
动作创建者创建的动作:
export const onDone = foo => dispatch => {
dispatch(whatever(foo));
dispatch({
type: ON_DONE,
});
};
PS:另一个答案建议调用 whatever(foo)(dispatch)
。虽然 技术上 有效并且是 redux-thunk 中间件内部工作的一部分,但它不适合 redux 数据流模型并且不是库作者的预期使用方式.请不要这样做。