recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Problème avec les sous-composants imbriqués dans React-Router pour obtenir des objets de localisation

Par exemple, une page a un composant modal. Le contenu du composant modal est écrit dans le sous-composant (ModalDetail) ne peut pas être obtenu dans ce composant. à partir du composant parent et via l'objet fenêtre. Prenez-le, existe-t-il un autre moyen

仅有的幸福仅有的幸福2767 Il y a quelques jours869

répondre à tous(2)je répondrai

  • 某草草

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

    Les versions antérieures à

    react-router v4 avaient un composant d'ordre supérieur appelé withRouter. Il vous suffit d'envelopper un calque lors de la définition de votre propre composant modal.

    La version v4 n'a pas été utilisée pour le moment, et on ne sait pas s'il y a eu des changements

    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)

    Après avoir enveloppé une couche de withRouter, vous pouvez accéder aux attributs souhaités. Vous pouvez également étudier plus en détail pour voir ce qu'il y a à l'intérieur.

    répondre
    0
  • PHP中文网

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

    Vous pouvez également utiliser withRouter et l'obtenir via this.props.location

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

    répondre
    0
  • Annulerrépondre