Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我无法在action creator文件中使用useHistory函数_Reactjs_Redux_React Redux_React Router - Fatal编程技术网

Reactjs 我无法在action creator文件中使用useHistory函数

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),如下

我正在使用react路由器dom和redux。我在分派后使用history.push(“/”),但它显示错误。 我希望用户在成功验证后导航到“/”(使用GOOGLE)


您不能在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>
)