首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React:未定义this.props.location.pathname

React:未定义this.props.location.pathname
EN

Stack Overflow用户
提问于 2020-06-05 20:21:34
回答 2查看 1.6K关注 0票数 0

告诉我如何访问pathname?参数this.props为空,并且this.props.location未定义。

如何自动获取该参数,而无需自行设置?

找到的大多数解决方案都需要我自己设置这个参数(手动),这不是很方便,而且代码很复杂。

代码语言:javascript
运行
复制
ReactDOM.render(
    <BrowserRouter>
      <React.StrictMode>
        <App />
      </React.StrictMode>
    </BrowserRouter>
  document.getElementById('root')
);

function App() {
  return (
    <Container>
      <Row><GeneralMenu /></Row>
      <Row>
        <Switch>
          <Route exact path="/block1">
            <PageStrategy />
          </Route>
          <Route exact path="/block2">
            <PageStrategy />
          </Route>
        </Switch>
      </Row>
    </Container>
  );
}

class GeneralMenu  extends Component {
    render() {
// {location} = this.props.location.pathname;
      return (
  <Navbar>
    <Nav activeKey = {this.props.location.pathname}>
      <Nav.Link href = "/block1">Block1</Nav.Link>
      <Nav.Link href = "/block2">Block2</Nav.Link>
    </Nav>
  </Navbar>
        );      
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-05 20:58:41

您应该以如下方式在您的GeneralMenu中使用withRouter() HOC:

代码语言:javascript
运行
复制
export default withRouter(GeneralMenu);

然后使用导出的图元。

您也可以在不导出元素的情况下执行以下操作:

代码语言:javascript
运行
复制
const WithRouterGeneralMenu = withRouter(GeneralMenu);
票数 2
EN

Stack Overflow用户

发布于 2020-06-05 21:26:29

代码语言:javascript
运行
复制
<Nav activeKey = {window.location.pathname}>

此选项有效!

代码语言:javascript
运行
复制
<Nav.Link as = {Link} to = "/block1">

相反,

代码语言:javascript
运行
复制
<Nav.Link href = "/block1">

对于站点速度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62215266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档