我在从React路由器v3迁移到v4时遇到了一些小问题。在v3中,我可以在任何地方执行此操作:
import { browserHistory } from 'react-router';
browserHistory.push('/some/path');
如何在v4中实现这一点。
我知道,当您在组件中时,我可以使用hocwith router
、react context或event router道具。但我不是这样。
我正在寻找v4中组件的外部导航的等价性
基于这个答案,如果你只需要历史对象以便导航到其他组件:
import { useHistory } from "react-router-dom";
function HomeButton() {
const history = useHistory();
function handleClick() {
history.push("/home");
}
return (
<button type="button" onClick={handleClick}>
Go home
</button>
);
}
这管用!https://reacttraining.com/react-router/web/api/withRouter
import { withRouter } from 'react-router-dom';
class MyComponent extends React.Component {
render () {
this.props.history;
}
}
withRouter(MyComponent);
您只需要有一个导出历史
对象的模块。然后在整个项目中导入该对象。
// history.js
import { createBrowserHistory } from 'history'
export default createBrowserHistory({
/* pass a configuration object here if needed */
})
然后,您将使用,而不是使用内置路由器之一
// index.js
import { Router } from 'react-router-dom'
import history from './history'
import App from './App'
ReactDOM.render((
<Router history={history}>
<App />
</Router>
), holder)
// some-other-file.js
import history from './history'
history.push('/go-here')
问题内容: 我从React-Router v3迁移到v4时遇到一些小问题。在v3中,我可以在任何地方执行此操作: 如何在v4中实现这一目标。 我知道当您在Component中时,可以使用hoc ,react上下文或事件路由器props。但对我而言并非如此。 我正在寻找v4中的NavigatingOutsideOfComponents的等效项 问题答案: 您只需要有一个导出对象的模块。然后,您将在整
如何使用react router v4获取当前路径? 我尝试了以下方法,但没有成功: 错误: 这是我的Routes.js文件:
问题内容: 我想显示在以某种方式从目前的路线通过。 在React Router v4中,如何将当前路由传递到prop中? 有没有办法通过从自定义自定义标题上? 问题答案: 在5.1版本的react-router中,有一个名为 useLocation 的钩子,该钩子返回当前的位置对象。每当您需要知道当前URL时,这可能都会有用。
问题内容: 在当前版本的React Router(v3)中,我可以接受服务器响应并用于转到相应的响应页面。但是,这在v4中不可用,我不确定哪种适当的处理方式。 在此示例中,使用Redux,当用户提交表单时, components / app-product-form.js 调用。服务器返回成功后,该用户将被带到“购物车”页面。 如何从React Router v4的功能重定向到购物车页面? 问题答
是否可以创建一个全局历史文件来管理react-router-dom v5上的createBrowser历史()?我知道V5有使用历史()作为获取历史的一种方式。但是有没有可能从任何地方检索历史记录,比如我没有使用函数组件的情况? 在V4上,我可以创建一个文件history.js: 它在V4上工作https://codesandbox.io/s/react-router-v4-nfwr0 它在V5上