Reaction-router v4: Как создать контент для подобной функции? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть это:

import { Route } from 'react-router-dom'

const App = () => (
  <div>
    {header} // or the header block
    <Route exact path="/" component={Home} />
    <Route path="/about" component={About} />
  </div>
)

Тогда мой компонент About выглядит следующим образом:

const About = () => {
  // contentFor header
  const myCustomHeader = <div>About header</div>

  return (
    <div>
      About page
    </div>
  )
}

Есть ли способ заменить header в компоненте App накомпонент myCustomHeader из компонента About?

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете передать функцию prop для обновления состояния родителей.Вы должны будете использовать рендер вместо компонента на вашем маршруте, чтобы пропустить реквизит.

import { Route } from 'react-router-dom'
import React from 'react'

class App extends React.Component{
    state = {
        header:"One Header"
    }

    render(){
        return (
            <div>
                {this.state.header} // or the header block
                <Route exact path="/" component={Home} />
                <Route path="/about" render={()=><About updateHeader={(newHeader)=>this.setState({header:newHeader})} />}/>
            </div>
        )
    }
}

И ваш О:

import React from 'react'

class About extends React.Component{

    render(){
        this.props.updateHeader(<div>About header</div>);
        return (
            <div>
                About page
            </div>
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...