问题标签 [connected-react-router]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 url 更改时重置 redux 状态
我有一个 redux 正在进行的项目。但是当我点击一个<Link>
组件或点击chrome上的“上一页”按钮时,redux会保留我之前更改的状态。我尝试了LOCATION_CHANGE
操作connected-react-router
并在减速器中使用它,但它似乎不起作用。
减速器:
reactjs - 'CallHistoryMethodAction<[string, unknown?]>' 类型的参数不可分配给 'UserActionType' 类型的参数
开发环境:react + typescript + connected-react-router
我的意图:我想在用户操作中异步使用路由器操作。因此,当登录完成后,我希望我的应用程序进入主屏幕。
错误消息:'CallHistoryMethodAction<[string, unknown?]>' 类型的参数不可分配给'UserActionType' 类型的参数
错误代码 :
用户操作类型代码:
根减速器代码:
问题:如何创建包含路由器操作的 Rootaction?
reactjs - 为使用 ConnectedRouter 制作的 React.JS 应用程序的 SSR 正确初始化服务器上的商店
我正在尝试为使用 Redux、Saga 和 ConnectedRouter 制作的 React 应用程序执行 SSR。我找到了几个相关的例子,特别是https://github.com/mnsht/cra-ssr和https://github.com/noveogroup-amorgunov/react-ssr-tutorial
那些我理解的应该工作。但是,我在挂钩状态和历史记录时遇到问题。
我的加载程序代码如下:
以下是我制作商店的方法:
和我的历史:
我尝试将上述内容放入createHistory(url)
服务器并在服务器上执行initialEntries: [url]
.
这很好,但它并不能解决我真正的问题,那就是createReducer()
. 我发现的例子确实如此createReducer(history)
,这很好。但是,它们不会动态注入减速器,而我的代码会。因此,我无法轻易更改以下版本:
进入版本,它只静态组装如下减速器(对不起打字稿):
代码来自https://github.com/noveogroup-amorgunov/react-ssr-tutorial/blob/master/src/store/rootReducer.ts逐字记录。
有什么建议么?我将如何执行上述所有操作,并且以下操作仍然正常?
目前,我的代码可以正常工作,但状态尚未初始化。就好像我没有发送任何动作一样。值是它们最初设置的值。
reactjs - 未捕获的语法错误:在 ci 部署后导航到具有 2 个或更多路径元素的路由时出现意外标记“<”
在 ci 部署之后,我尝试导航到 '/records/:id' 或具有 2 个或更多路径元素的其他路由,并将在控制台中收到此错误。在本地运行时,此错误永远不会出现。
Uncaught SyntaxError: Unexpected token '<'
在我的项目中,我使用webpack进行配置,并使用connected-react-router作为路由器。
webpack.config.js
webpack.config.prod.js
索引.tsx
包.json
我可以知道这个错误是由 webpack 或路由器中的配置引起的吗?
node.js - Redux-Persist:TypeError:无法读取未定义的属性“getItem”
我正在开发一个 react 应用程序,最近在我的 mac 上升级到 node12.10.0 并且看到了大量的包问题。我在我的项目中升级了很多包,但是当我调用persistor.purge() 时似乎出现了一个错误:
当我在以下减速器代码中点击 persistor.purge() 时,错误本身似乎发生了:
这是我创建 peristor 和商店的代码:
我查看了设置示例,但没有发现问题可能出在哪里。
redux - 如何在 Next.js 应用程序中使用 redux-saga 进行路由
我正在尝试将我的 react 应用程序迁移到 next.js 应用程序。
- 我喜欢 redux-saga
- 我喜欢 redux-saga 逻辑中的路由
- 而且我想像以前一样在 redux-saga 逻辑中进行路由!
但我无法弄清楚如何做到这一点。问题是..
- 如何在 Next.js 中使用 redux-saga 逻辑进行路由?
- 这是不好的做法吗?我认为将路由逻辑放在 saga 上似乎更合理。但我认为这不是一种流行的方式。为什么很多人不使用它?
帮助了解我的情况。我通常在反应应用程序中进行路由,如下所示
我的传奇逻辑之一作为示例
我使用'connected-react-router'来做到这一点。和 actions.router 从下面的文件中导出。
下面是我如何配置我的 redux 商店
reactjs - 如何在连接的反应路由器和历史中管理语言
想象一下,我的应用程序结构如下:
我想为我的应用程序提供多语言支持,因此想从路径中获取语言并将其保存在我的redux
商店中以供以后使用。
关于SO Imagine 中的这个答案,我想从路径中读取语言,所以在我的App
组件中我应该有如下内容:
这是可以接受的,但是,当我使用下面的组件时,我应该在传递给它react-router
Link
的 prop 中指定语言。to
如果这些Link
实例是我自己创建的,那没有问题,但是有很多使用第三方库Link
创建的内部组件,他们不知道我(严格来说是我的应用程序 redux 商店)中指定的语言。Home
App
我没有修改库的源代码的特权,即使我不想在每次调用时都传递语言Link
(甚至当我history.push
显式调用时),管理语言在某种程度上是一个横切关注点,我是考虑在历史记录中使用代理,以便每当调用它的方法push
时,path
我都可以使用. 这个想法有其局限性,我无法实现它,因为将传递给的历史代理应该在之前创建。另一方面,使用我应该有的特定语言创建代理,以便我可以从路径中检测语言。history
push
/:lang/path
ConnectedRouter
ConnectedRouter
history
ConnectedRouter
所以这里是主要问题:
如何强制拦截对likepush
方法的每个调用,因为从商店中选择的位置。history
history.push('path')
history.push('/:lang/path')
lang
redux
reactjs - 错误:不变量失败:您不应该使用外面
我正在使用 react-redux 做一个登录页面。在用户向应用程序提供正确的 ID 和密码后,它应该将用户重定向到主页。上面的错误显示当我使用 . 如果我改为使用无错误显示但页面无法将用户重定向到主页。
index.js
效果.js
减速器.js
模型.js
登录表单.js
我尝试了 StackOverflow 中的许多解决方案,还检查了包版本。
包.json
reactjs - 连接路由器打字稿声明全局状态类型
对打字稿来说很新——我已经根据 redux root-reducer 的状态定义了我的全局状态。在我决定使用连接路由器之前,这一直很好用——它向根减速器添加了一些东西——现在我不确定如何声明全局状态。
例如......这是我的全局状态类型:
如果我将鼠标悬停在 rootReducer 上,我可以看到我需要访问的属性:
虽然在创建一个 redux 选择器来访问我的属性时,我得到了一个打字稿错误。首先是我的选择器,错误出现在.ui
属性下。
这是我得到的错误:
我假设,因为我添加了连接路由器,我需要以不同的方式声明我的全局状态,但不知道如何做到这一点。感谢您提供正确方向的任何帮助或指示。