Получение React Props после отправки его из Route - PullRequest
0 голосов
/ 14 апреля 2019

Я отправляю React Component из маршрута, как упомянуто в этом Link

<Route path='/StartCompaign' render={(props) => <CampaignStart {...props} isDashboard={true} /> } />

, и я получаю реквизиты в другом Компоненте, таком как

{props.childern.render.isDashboard ? <Header /> : "NO"  }

APPФайл .JSX

import React from 'react';
import { Route, Switch } from 'react-router';
import Layout from './components/Layout';

import Home from './components/Dynamic/Home';
import Filter from './components/Dynamic/Filter';
import { AboutCampaign } from './components/Dynamic/AboutCampaign';
import { CampaignStart } from './components/Dynamic/CompaignStart';
import NotFound from './NotFound';
import {SignUp} from './components/Static/SignUp';  
import { Login } from './components/Static/Login';  

import Dashboard from './components/Dashboard'

import { withCookies } from 'react-cookie';

class App extends React.Component {
    render() {
        return (
            <Switch>
                <Layout>
                    <Route exact path='/' component={Home} />
                    <Route path='/filter' component={Filter}/>
                    <Route path='/Campaign/:campaignId' component={AboutCampaign}/>
                    <Route path='/SignUp' component={SignUp}/>
                    <Route path='/Login' component={Login}/>
                    <Route path='/Dashboard' render={(props) => <Dashboard {...props} isDashboard={true} /> } />

                    <Route path="" component={NotFound} />
                </Layout>
            </Switch>
        );
    }
}

export default withCookies(App);

Layout.JSX

import React from 'react';
import { Container } from 'reactstrap';
import Header from './Static/Header';
import Footer from './Static/Footer';
import TopNavigation from './Component/DashBoard/TopNavigation'

export default props => (
    <div>
        {props.isDashboard ? <Header /> : <TopNavigation />  }
        <Container>
            {props.children}
        </Container>
        <Footer />
  </div>
);

Я пытаюсь изменить <Header/> и <TopNavigation /> в приложении реакции, когда вызывается конкретный маршрут, но props.isDashboardказалось undefined

1 Ответ

2 голосов
/ 14 апреля 2019

Это потому, что вы отправляете реквизит на <Dashboard/> компонент

<Dashboard {...props} isDashboard={true} />

, но не для <Layout /> компонента. Если компоненту Layout необходимо получить реквизиты isDashboard, вам нужно передать его как

<Layout isDashboard={true} />

Поскольку Layout является родительским компонентом, если дочерним компонентам также нужны реквизиты, вы всегда можете легко передать их дочерним элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...