Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

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
Javascript 对组件外部react路由器v5中历史记录(history.push等)的编程访问_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 对组件外部react路由器v5中历史记录(history.push等)的编程访问

Javascript 对组件外部react路由器v5中历史记录(history.push等)的编程访问,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我曾经能够在中将历史传递到React路由器,您可以试试 import { createBrowserHistory } from "history"; createBrowserHistory().push("/login"); 它适用于“react router dom”:“^4.2.2”,似乎与您的问题无关也许我的代码可以帮助您: 从“历史”导入{createBrowserHistory}; 从“qs”导入qs; const history=createBrowserHistory()

我曾经能够在中将历史传递到React路由器,您可以试试

import { createBrowserHistory } from "history";

createBrowserHistory().push("/login");


它适用于“react router dom”:“^4.2.2”,似乎与您的问题无关

也许我的代码可以帮助您:

从“历史”导入{createBrowserHistory};
从“qs”导入qs;
const history=createBrowserHistory();
历史记录。位置={
…历史,地点,
查询:qs.parse(history.location.search.substr(1)),
国家:{},
};
历史。听(()=>{
历史记录。位置={
…历史,地点,
查询:qs.parse(history.location.search.substr(1)),
state:history.location.state |{},
};
});
const{go,goBack,push,replace}=历史;
导出{go、goBack、push、replace、getRedirectPath};
导出默认历史记录;

然后在react router history prop中使用此文件中公开的历史记录。现在,您可以在组件外部或内部使用公开的go或push功能

谢谢,所以使用
从'react Router dom'导入{Router}改为浏览器路由器帮助!
此外,您需要导入历史记录并作为道具传递给路由器:


然后history.push将重新命名案例。

这是否与使用
窗口相同。history
因为它没有连接到react路由器实例,所以不会以相同的方式运行?这是我的项目工作代码中的一个工作示例,它不会以相同的方式运行编辑:只是尝试了一下,但正如预期的那样,它不起作用,因为react router未使用相同的实例,因此它不会重新渲染,因此,虽然路由未发生任何视觉变化抱歉,我忘了版本,我使用了“react router dom”:“^4.2.2”在这个例子中,你能提供更多关于
外部的具体信息吗?比如说在HTTP获取包装器中,或者在apollo全局链接错误处理程序中,使用reducer是有意义的。FAIK,一种方法是将函数(错误处理程序)包装在钩子中,并在路由器作用域附近加载它。将历史对象传递给钩子工厂。嗯,是的,很遗憾,我可能需要做这样的事情,过去很简单:|钩子模糊了逻辑和视图的边界。我想这符合胡克的精神。
import { createBrowserHistory } from "history";

createBrowserHistory().push("/login");