登陆

javascript - react-router中嵌套的子组件拿location对象的问题

比如说一个页面有个modal组件,modal组件里面的内容写在子组件里面(ModalDetail),在这个组件里面拿不到this.props.location,求解答,除了从父组件传进去和通过window对象拿,还有什么方法

# JavaScript
仅有的幸福仅有的幸福1603 天前321 次浏览

全部回复(2)我要回复

  • 某草草

    某草草2017-06-26 10:52:02

    react-router v4之前的版本,有一个叫做withRouter的高阶组件。你在定义自己的modal组件时包一层即可。

    v4版本暂时没有用过,有没有改动不清楚

    import React from 'react'
    import PropTypes from 'prop-types'
    import { withRouter } from 'react-router'
    
    // A simple component that shows the pathname of the current location
    class ShowTheLocation extends React.Component {
      static propTypes = {
        match: PropTypes.object.isRequired,
        location: PropTypes.object.isRequired,
        history: PropTypes.object.isRequired
      }
    
      render() {
        const { match, location, history } = this.props
    
        return (
          <p>You are now at {location.pathname}</p>
        )
      }
    }
    
    // Create a new component that is "connected" (to borrow redux
    // terminology) to the router.
    export default withRouter(ShowTheLocation)

    包一层withRouter之后,就可以访问到你想要的属性了,你还可以进一步学习,看看里面都有些什么。

    回复
    0
  • PHP中文网

    PHP中文网2017-06-26 10:52:02

    还可以使用withRouter,通过this.props.location获取

    import React, { Component } from 'react';
    import { withRouter } from 'react-router'
    
    
    class  MyComponent extends Component {
    
       .....
    }
    
    export default withRouter(MyComponent)
    

    回复
    0
  • 取消回复发送