reactjs - 如何将一些参数(动态路径)从 mapDispatchToProps 发送到 watcherSaga/workingSaga(中间件)?
问题描述
当有一个动作调用“GET_NODES_ASYNC”时,我只想发送一些额外的参数,我需要将路径连同它一起发送,以便可以将此路径发送到 workingSaga 以通过 watcherSaga 进行 API 调用。但我无法正确发送给我的 watcherSaga
// reactComponent.js
const mapDispatchToProps = dispatch => {
return {
reduxGetNodes: path =>
dispatch({
type: "GET_NODES_ASYNC",
path: "article/path/" // It comes from an dynamic react component
})
};
};
// watcherSaga.js
export function* watchNodes(path) {
console.log("******* " + path); // It comes undefined here
yield takeLatest("GET_NODES_ASYNC", nodesAsync, path);
}
路径没有从 mapDispatchToProps 正确传递到 watcherSaga,因此在 console.log() 上 path = "undefined"。相反,我需要它是“article/pathHere/”
解决方案
mapDispatchToProps
可以访问组件道具作为第二个参数。所以它应该看起来像这样:
const mapDispatchToProps = (dispatch, ownProps) => {
return {
reduxGetNodes: () => {
const { path } = ownProps;
dispatch({
type: "GET_NODES_ASYNC",
path
});
}
};
};
function* nodeAsync(action) {
console.log("******* " + action.path);
...
}
export function* watchNodes() {
yield takeLatest("GET_NODES_ASYNC", nodeAsync);
}
推荐阅读
- azure-ad-b2c - msal.js - 注销而不重定向
- javascript - 删除角度6+中的多个查询参数之一
- c++ - 从其句柄 (HMONITOR) 获取监视器索引
- cordova - 依赖插件版本错误 - 将 phonegap-push 插件安装到已安装 firebase-analytics 插件的现有 Ionic 应用程序时
- c++ - 为什么 gcc5.4 不编译调用非 constexpr 函数的 constexpr 函数,但 icpc 可以?
- javascript - 主页面的 javascript 和 node.js 之间的回调
- heroku - Heroku 应用程序仅使用 AWS S3 安全凭证上传一次
- excel - 绝对参考 Vlookup
- android - 使用 mockk 匹配任何可变参数
- visual-studio-code - vscode扩展改变标题栏的颜色