javascript – React Router:在呈现的Route组件中访问历史记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – React Router:在呈现的Route组件中访问历史记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1582字,纯文字阅读大概需要3分钟。
内容图文
![javascript – React Router:在呈现的Route组件中访问历史记录](/upload/InfoBanner/zyjiaocheng/820/065df3bda80b42b482efe9fb25e63987.jpg)
我知道有很多问题,但我似乎无法让它工作:我需要从通过路由呈现的子组件访问“历史”. (它从redux容器接收道具).
我需要将历史对象传递给每个Route中呈现的组件,以便我可以在子组件中使用this.props.history.push(‘/ route’).此应用程序之前的动态性较差,因此每个Route都使用component = {someComponent}进行硬编码;但我发现在动态执行路由时,您需要使用render = {()=> < someComponent />}.
将路径从component = {}更改为render = {()=> …}我在儿童组件中丢失了历史.
我的代码是这样的:
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import { HashRouter as Router, Link, Route, Redirect } from 'react-router-dom';
import { Nav_Item } from '.'
import DynamicTab from '.';
export default class NavBar extends React.Component {
constructor(props) {
super(props);
this.state={}
}
render() {
let tabs = [];
let routes = [];
this.props.tabs.forEach( function(tab, index) {
tabs.push(<Nav_Item key={tab.name} path_name={'/' + tab.name} tab_text={tab.label} />);
routes.push(<Route key={tab.name} path={'/' + tab.name} render={() => <DynamicTab tabName={tab.name} tabSpecs={tab} />} />);
})
return (
<Router>
<div>
<div>
<ol>
{ tabs }
</ol>
</div>
<Redirect to={'/' + this.props.tabs[0].name} />
{ routes }
</div>
</Router>
)
}
}
解决方法:
当你使用渲染时,你实际上得到道具.在文档中,他们有一个这样的例子:
<Route {...rest} render={props => (
<FadeIn>
<Component {...props}/>
</FadeIn>
)}/>
因此,您应该能够从这些道具中访问历史记录.
另一种解决方案是有条件地渲染< Redirect />零件.所以也许你有一些你使用的内部状态:
// in your components render function..
if(this.state.shouldRedirect) {
return (<Redirect to={yourURL} />);
}
内容总结
以上是互联网集市为您收集整理的javascript – React Router:在呈现的Route组件中访问历史记录全部内容,希望文章能够帮你解决javascript – React Router:在呈现的Route组件中访问历史记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。