reactjs - react-router-dom:从 <BrowserRouter> 组件中获取 props.location

标签 reactjs react-router-dom

我有一个简单的应用程序,使用 BrowserRouter来自“react-router-dom”v4。我正在尝试访问 location.pathname <BrowserRouter/> 内的属性(property)组件,无济于事:

class App extends Component{
  render(){
    return (
      <BrowserRouter>
        // How do I access this.props.location?
        <div className={(this.props.location.pathnme === "/account") ? "bgnd-black" : "bgnd-white"} >
          <Switch>
            <Route path="/login" component={LoginPage}/>
            <Route path="/success" component={LoginSuccess}/>
            <Route path="/account" component={MyAccount}/>
            ...
            <Route component={Error404}/>
          </Switch>
        </div>
      </BrowserRouter>
    );
  }
}

我知道我可以通过子组件访问应用程序的当前路径位置 this.props.location.pathname ,但我需要从 <BrowserRouter/> 下面的父组件访问它运行与子组件无关的附加逻辑。我怎样才能获得这个位置?

最佳答案

您还可以使用 withRouter 来完成此操作这与将代码放入 render 具有类似的结果参数并避免需要“假”<Route/> .

本质上,您将需要知道位置的 JSX 放在它自己的组件中,该组件由 withRouter 包装。 。这为组件提供了位置:

import { withRouter } from 'react-router-dom';

const Content = withRouter(props =>
    <div className={(props.location.pathname === "/account") ? "backg...
    ...
    </div>
);

然后您在主路由器部分中使用它:

class App extends Component{
    render() {
        return (
            <BrowserRouter>
                <Content/>
                ...

关于reactjs - react-router-dom:从 <BrowserRouter> 组件中获取 props.location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298325/

相关文章:

javascript - 如何使用索引号而不是对象的 id 路由到各个页面?

javascript - React Router 4 通过 Route render 传递 props 不起作用

javascript - 是否可以使用react-router-dom动态地浏览不同的本地主机?

reactjs - React 路由器返回相同的元素

reactjs - React-select - 选项不集中于所选值

css - 当在运行时检索到自定义 css 时,我应该如何处理 react 应用程序中的 css?

javascript - 如何将数据从 ReactJS 发布到 NodeJS Express API

javascript - 将本地 mp4 文件转换为 fileURL 以进行视频 react

javascript - 如何在 React 中的切换开关组件内添加文本?

javascript - 如何使用 React Router 将 div 放入 Switch 中?