2017-06-19 2 views
-1

Ich habe Schwierigkeiten mit reactive Route 4, versuchen zu erraten, warum es nur im Hauptmodul funktioniert.React Router 4 funktioniert nur im Hauptmodul

Mein Code:

import React from 'react' 
import ReactDOM from 'react-dom' 
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom' 
import Enterprise from './containers/Enterprise' 
import Provider from './containers/Provider' 
import Home from './containers/Home' 

let render =() => { 

    ReactDOM.render(
    <Router> 
     <div> 
     <Switch> 
      <Route exact path="/" component={Home}/> 
      <Route exact path="/enterprises" component={Enterprise} > 
      <Route exact path="/providers" component={Provider} /> 
     </Switch>       
     </div> 
    </Router>, 
    document.getElementById('root') 
) 
} 

render() 

Dies wird so bald aufhören zu arbeiten, als ich die Routen innerhalb AppContainer (leben in einer separaten Datei) erklären. Wie:

AppContainer.js

imports... 

class AppContainer extends Component { 

    shouldComponentUpdate() { 
    return false 
    } 

    render() { 

    return (
     <Header /> 

     <Sidebar /> 

     <main> 
      <Switch> 
      <Route exact path="/" component={Home}/> 
      <Route exact path="/enterprises" component={Enterprise} > 
      <Route exact path="/providers" component={Provider} /> 
      </Switch> 
     </main> 

     <Footer /> 
    ) 
    } 
} 

export default AppContainer 

main.js

imports... 

let render =() => { 

    ReactDOM.render(
    <Router> 
     <AppContainer />   
    </Router>, 
    document.getElementById('root') 
) 
} 

Ich verwende webpack Module, aber nicht so mit dem Code Splitting ... Ich bin verwirrt. Ich habe im Internet nach Beispielen gesucht, die in getrennten Modulen funktionieren (auch wenn der Quellcode in einer einzigen Datei angezeigt wird).

Irgendwelche Hinweise?

+0

Ist ' AppContainer 'auf jeden Fall eine Reaktiv-Hot-Loading-Komponente? Wenn dem so ist, denke ich, dass das falsch ist. Setzen Sie '' 'innerhalb AppContainer' und' Router' in 'App'. – heyhugo

+0

Ja, ich habe heiß nachladen. Und ich habe eine Komponente in AppContainer. Eigentlich wollte ich meine Seiten rendern, also versuche ich hier meine Routen zu definieren (oder sie zumindest als Requisiten zu übergeben, aber keiner der beiden Versuche funktioniert). – mayid

+0

Also habe ich HMR deaktiviert und es wird auch nicht funktionieren. – mayid

Antwort

-1

Scheint wie das Problem war sollteComponentUpdate(). Ich benutze jetzt eine Konstante und es funktioniert.

AppContainer.js

Importe ...

const AppContainer =() => (

     <div className="page-wrapper"> 

      <Header /> 

      <div className="page-container"> 

       <Sidebar /> 

       <main>   
        <Switch>   
        <Route exact path="/" component={Home} /> 
        <Route exact path="/enterprises" component={Enterprise} > 
        <Route exact path="/providers" component={Provider} />   
        </Switch> 
       </main>            
      </div> 

      <Footer /> 

     </div> 
) 

(btw, dass Block geht tatsächlich in einer anderen Datei Komponente namens Seite. Ich bin Vereinfachung nur hier meinen Code)

+0

Ein Kommentar zum Down-Vote wäre willkommen. Ich bin neu mit Reagieren und Reagieren-Router und habe wirklich viel über das Thema recherchiert. Also, ich habe mein Bestes gegeben. – mayid