Reactjs 我无法在action creator文件中使用useHistory函数
我正在使用react路由器dom和redux。我在分派后使用history.push(“/”),但它显示错误。 我希望用户在成功验证后导航到“/”(使用GOOGLE)Reactjs 我无法在action creator文件中使用useHistory函数,reactjs,redux,react-redux,react-router,Reactjs,Redux,React Redux,React Router,我正在使用react路由器dom和redux。我在分派后使用history.push(“/”),但它显示错误。 我希望用户在成功验证后导航到“/”(使用GOOGLE) 您不能在action creator文件中使用useHistory钩子,因为它既不是React函数组件,也不是自定义钩子 根据,React钩子(例如,useHistory)只能在函数组件或自定义钩子中使用 但是,如果您想访问React组件外部的历史对象,您可以创建自己的历史对象,并将其提供给路由器(从React路由器dom),如下
您不能在action creator文件中使用
useHistory
钩子,因为它既不是React函数组件,也不是自定义钩子
根据,React钩子(例如,useHistory
)只能在函数组件或自定义钩子中使用
但是,如果您想访问React组件外部的历史
对象,您可以创建自己的历史
对象,并将其提供给路由器
(从React路由器dom),如下所示:
创建一个文件,history.js:
import { createBrowserHistory } from 'history'
export default createBrowserHistory()
使用路由器
并为其提供您的历史
对象:
import history from '../path/to/history'
import { Router } from 'react-router-dom'
// ...
return (
<Router history={history}>
<App/>
</Router>
)
相关的:
注意:使用
路由器
不会阻止您使用使用历史
钩子或路由器
HOC,就像您通常使用的那样,也就是说,您仍然可以在其他React组件中使用钩子或HOC来获取历史错误:-钩子调用无效。钩子只能在函数组件的主体内部调用。发生这种情况的原因如下:1。React和渲染器(如React DOM)2的版本可能不匹配。你可能违反了Hooks 3的规则。同一个应用程序中可能有多个React副本。有关如何调试和修复此问题的提示,请参阅。请在继续之前再次检查
import history from '../path/to/history'
import { Router } from 'react-router-dom'
// ...
return (
<Router history={history}>
<App/>
</Router>
)