ReactJS - я не могу передать свой маршрут Route для дочернего компонента - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть этот компонент, который передает реквизит для дочернего компонента:

import React, { Component } from 'react'
import { BrowserRouter as Router, Route, NavLink } from 'react-router-dom'    
import PortfolioPage from './PortfolioPage'  

class PortfolioMenu extends Component {
  constructor(props) {
    super(props)
    // here is the prop to be passed for a child component
    this.state = {       
      interiorsUrl: "http://localhost:3001/interiors"
    }
  }

  render() {    
    return (
      <div>
        <Router>
          <div class="wrapper2">
            <div class="wrapper-portfolio">
              // here is the line to pass the prop
              <Route exact path='/portfolio/interiores' render={() => <PortfolioPage interiorsUrl={this.state.interiorsUrl}/>} />
            <nav>
              <ul>   
                <li><NavLink activeClassName="active" exact to="/portfolio/interiores">• interiores</NavLink></li>                  
              </ul>
            </nav>
          </div>
        </Router>
      </div>
    )
  }
}


export default PortfolioMenu

Вот дочерний компонент, который получает реквизиты:

import React, { Component } from 'react'
import axios from 'axios'
import Modal from 'react-responsive-modal';
import Lightbox from 'react-lightbox-component';


const URL = this.props.interiorsUrl;


class PortfolioPage extends Component {
  constructor(props) {
    super(props);
    this.state = {
      result: []
    }

  }

  componentDidMount() {
    axios.get(URL)

//...rest of the code omitted

В компоненте выше, естьсообщение об ошибке на консоли:

TypeError: Невозможно прочитать свойство 'interiorsUrl' из неопределенного

Указано на эту строку кода:

 const URL = this.props.interiorsUrl;

Что я не так сделал?Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019
class PortfolioPage extends Component {
  constructor(props) {
    super(props);
    this.state = {
      result: []
    }

  }

  componentDidMount() {
    const { interiorsUrl } = this.props;
    axios.get(interiorsUrl)
      .then(response => this.setState({ result: response.data }))
      .catch(e => console.error(e));

  }
  //...rest of the code omitted
0 голосов
/ 19 февраля 2019

Вам нужно вызвать this.props.interiorsUrl изнутри вашего компонента.

Так что где-нибудь вместо {} после класса

например:

componentDidMount() {
    axios.get(this.props.interiorsUrl)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...