Javascript 如何从saga获取action.params
我正在使用Javascript 如何从saga获取action.params,javascript,redux,state,redux-saga,Javascript,Redux,State,Redux Saga,我正在使用redux saga。在代码中,yield*ReduxSaga.takeEvery('MY_ACTION',updateport)如何访问操作以获取其字段 例如,我有一个动作创建者: function status(){ type: 'MY_ACTION', status: true } 如何从我的传奇中访问action.status?或者我必须只通过getState()和访问数据吗 你也可以这样做。redux saga文档很好地解释了这些优点: 使用take对我们如何编
redux saga
。在代码中,yield*ReduxSaga.takeEvery('MY_ACTION',updateport)代码>如何访问操作
以获取其字段
例如,我有一个动作创建者:
function status(){
type: 'MY_ACTION',
status: true
}
如何从我的传奇中访问action.status
?或者我必须只通过getState()
和访问数据吗
你也可以这样做。redux saga文档很好地解释了这些优点:
使用take对我们如何编写代码有着微妙的影响。在takeEvery的情况下,调用的任务无法控制何时调用它们。每次匹配操作都会反复调用它们。他们也无法控制何时停止观察
在采取控制措施的情况下,控制权倒置。而不是行动
这部传奇故事被推到了处理者的任务上,它通过
它本身看起来这部传奇正在执行一个正常的函数调用
action=getNextAction(),该函数将在执行操作时解析
派遣
请在此处阅读更多内容:通常,您可能有一个根saga或索引saga,其中您可以有一个init生成器,其yield all如下所示:
//in your action creator
const actionCreator = () => ({
type: 'MY_ACTION1',
status: true
});
//in your saga file, you will receive 'action' and then you can destructure it to status if you want.
function* updateDataForAction1({ status }) {
//use value of status
}
//in your root saga file
export function* watchInit() {
yield all([
takeEvery('MY_ACTION1', updateDataForAction1),
takeEvery('MY_ACTION2', updateDataForAction2),
takeEvery('MY_ACTION3', updateDataForAction3),
]);
}
你太棒了。它起作用了。你可以发布一个文档链接吗。我本来可以找到的,为我工作。棒极了,伙计!
const actionCreator = () => ({
type: 'MY_ACTION',
status: true
})
function* updatePorts() {
while (true) {
const { status } = take('MY_ACTION');
// ...
}
}
//in your action creator
const actionCreator = () => ({
type: 'MY_ACTION1',
status: true
});
//in your saga file, you will receive 'action' and then you can destructure it to status if you want.
function* updateDataForAction1({ status }) {
//use value of status
}
//in your root saga file
export function* watchInit() {
yield all([
takeEvery('MY_ACTION1', updateDataForAction1),
takeEvery('MY_ACTION2', updateDataForAction2),
takeEvery('MY_ACTION3', updateDataForAction3),
]);
}