reactjs - How to pass in children to parent <Route> component -


i'd define following structure on page:

enter image description here

where layout static , contains elements appear on every page, , render page content based on url.

to achieve i've defined approutes, layout, about , notfound , used react-router, v4:

approutes.js

export default class approutes extends react.component {       render ()     {         const supportshistory = 'pushstate' in window.history;         return (         <browserrouter forcerefresh={!supportshistory} history={hashhistory} onupdate={() => window.scrollto(0, 0)}>             <div>                 <route path='/' component={layout}>                     <route path='/about' component={about}/>                     <route path='*' component={pagenotfround}/>                 </route>             </div>         </browserrouter>);     }; }; 

layout.js

class navigationpane extends react.component {     render()     {         return (             <div>                 <navlink to="/">home</navlink>                 <navlink to="/about">about</navlink>             </div>         )     } }  export default class layout extends react.component {     render ()     {         return (         <div classname="app-container">             <header>                 <navigationpane/>             </header>             <div classname="app-content">                 {this.props.children}             </div>         </div>         );     } } 

layout's header rendered, @ / or @ /about page content empty. if change 1 below pagenotfound rendered @ end, no matter path, while rest works expected, namely / renders layout, while /about renders about component.

<browserrouter forcerefresh={!supportshistory} history={hashhistory} onupdate={() => window.scrollto(0, 0)}>                 <div>                     <route path='/' component={layout}/>                     <route path='/about' component={about}/>                     <route path='*' component={pagenotfround}/>                 </div>             </browserrouter> 

i checked in both cases this.props.children in layout undefined.

update tried out few things , figured that

 <layout>      <switch>          <route exact path='/' component={indexpage}/>          <route path='/about' component={about}/>          <route component={pagenotfround}/>       </switch>  </layout> 

will basic scenario , understand why previous code did not work: in react-router v4

<route to='/' component={layout}>        <route path='/about' component={about}/> </route> 

is not valid. structure

<browserrouter>       <div>          <route path='/' component={layout}>          <route path='/about' component={about}/>          <route path='*' component={pagenotfround}/>       </div>  </browserrouter>  

will keep matching routes until rules exhausted, / matched every time , * matched every time.

so use <layout> component wrap , create routes inside , ensure 1 path matched use <switch>.

this not wanted, because if add path /about/:user about component rendered. question still open.


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -