我已经使用npx create-react-app
创建了一个React应用程序。我正在使用React Router来控制路由。我需要能够从props.location.search
组件内部访问Navbar
。但是,由于Navbar
不是Route
的后代,因此location
属性不会自动传递到导航栏。如何获得此属性并将其传递到Navbar
内部的App.js
?
// App.js
import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import { Container } from 'react-bootstrap';
import Navbar from './components/navbar';
function App() {
return (
<Router>
<Switch>
<Navbar location={LOCATION NEEDS TO BE PASSED} />
<Container>
<Route path="/" exact component={HomePage} />
</Container>
</Switch>
</Router>
);
}
export default App;
答案 0 :(得分:0)
在<Navbar/>
组件内部,您可以使用useLocation
钩子访问位置(如果navbar是函数而不是类)
const { pathname } = useLocation();
,您可以通过useLocation
钩子访问更多路线信息
答案 1 :(得分:0)
通过用Navbar
包装withRouter
组件,我可以访问react路由器传递的属性。
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class Navbar extends Component {
componentDidMount() {
console.log(this.props.location.search);
}
}
export default withRouter(Navbar);