【发布时间】:2023-03-30 07:16:01
【问题描述】:
我知道对此有很多问题,但我似乎无法让它发挥作用:我需要从通过 Routes 呈现的子组件访问“历史记录”。 (它从一个 redux 容器接收 props)。
我需要将历史对象向下传递给每个 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>
)
}
}
【问题讨论】:
标签: javascript reactjs react-router