reactjs - 反应路由器功能组件重定向事件
问题描述
我有一个带有反应路由器的功能组件。
使用时工作正常,<Link ... />
但我想重定向某些事件。
问题是props.history
未定义。
function App(props) {
const onClick = () => {
console.log(props.history);
//props.history.push("/about");
};
return (
<div className="App">
<BrowserRouter>
<Link to="/about">About</Link> <br />
<button onClick={onClick}>
<b>onclick redirect</b>
</button>
<Route path="/about" component={About} />
</BrowserRouter>
</div>
);
}
https://codesandbox.io/s/react-router-demo-o6s89
如何以编程方式重定向?
谢谢
解决方案
将组件包装App
在withRouter
HOC 中并移至BrowserRouter
组件AppContainer
。这应该有效。
import { Route, Link, BrowserRouter, withRouter } from "react-router-dom";
function App(props) {
const onClick = () => {
console.log(props.history);
props.history.push("/about");
};
return (
<div className="App">
<Link to="/about">About</Link> <br />
<button onClick={onClick}>
<b>onclick redirect</b>
</button>
<Route path="/about" component={About} />
</div>
);
}
const AppWithRouter = withRouter(App);
const AppContainer = () => {
return (
<BrowserRouter>
<AppWithRouter />
</BrowserRouter>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<AppContainer />, rootElement);
推荐阅读
- python - 指定如何分区 dask 数据帧?
- java - Java - 在这种情况下如何正确规避非法访问异常
- regex - 从 EventLog 消息中提取一个句子
- javascript - 如何在 JS/jQuery 中激活新创建的输入
- join - 使用 awk 进行完全外连接
- ios - 制作自定义相机,在我的 App Delegate 中收到“线程 1:信号 SIGBRT”错误
- python - 熊猫合并不匹配:第二个数据框永远不会合并?
- python-2.7 - 在亚马逊 ec2 上运行烧瓶 restplus 应用程序时得到 404
- reactjs - React.JS 无法添加 html 标签
- c# - 如何每 n 分钟运行一次任务