javascript - 如何使用 rxjs 和 redux-observable 等待或监听 Url 的变化?
问题描述
在收到响应数据并转到另一个页面后,我正在尝试显示模式弹出窗口。正确实施这一点很热吗?
使用React-observable和rxjs 。我确实使用对服务器的请求和更改 history.location 创建了一个史诗。它工作正常
action$.pipe(
ofType(myActionLading),
mergeMap(action => of(convertDataToServer(action.payload))),
mergeMap(data =>
from(convertToDataAPI(data)).pipe(
mergeMap(response => of(convertCustomerFromServer(response.
mergeMap(() => {
return of(
actionGetDataInfoLoading({ id }),
);
}),
tap(() => history.push('/newRoute')),
takeUntil(// I have to verify if I am already on my newRoute and then show the popUp),
finalize(() => console.log('!!! FIN !!!') ||
modals.getModalSuccess()),
),
),
我想在新路线上看到“成功”模式弹出窗口。所以我想听history.push,或者验证我是否在新路线上,然后才显示模态
解决方案
我不相信可以按照您解释的方式执行该逻辑(react-router
至少)。
但是,如果/newRoute
只能通过此操作成功到达,则可以在newRoute
挂载对应的组件时打开模态框。
否则,提供查询参数以确定您是否要打开模式。
例如:
// someEpic.js
tap(() => history.push('/newRoute?showModal=true')
...
//newRoute.jsx (The component)
export class NewRoute extends React.Component {
...
componentWillMount() {
const showModal = this.props.... // logic to get query param of showModal.
if (showModal) {
modals.getModalSuccess();
}
}
}
推荐阅读
- amazon-web-services - 将 AWS Service Catalog 标签或属性与关联的服务操作一起使用
- c# - 在两个不同的函数中拆分包含两个 foreach 循环的迭代器
- python - 为熊猫列中的每个唯一值创建新数据框
- sql - SQL:现有查询的 WHERE 问题
- c++ - 将数字转换为字符
- python - 连接一个 DataFrames 列表,只取先前 DataFrames 中不存在的列
- php - 使用 PHP 将记录插入 SQLite
- java - Javassist,将字段访问重定向到对象方法
- c# - 可以在 ASP.NET 中使用自己的代码拦截 Response.Write
- javascript - 如何在 jQuery 中迭代多个对象列表以进行计算