0

我有一個非常簡單的項目和反應路由器DOM不渲染組件。有時它會呈現第一個路由的組件,但不會呈現。React路由器Dom沒有渲染任何組件

下面的代碼爲App.js:

import React, { Component } from 'react'; 
import { Provider } from "react-redux"; 
import { 
    BrowserRouter as Router, 
    Route 
} from "react-router-dom"; 

import store from "./store"; 
import createHistory from 'history/createBrowserHistory'; 

import { IntroJm } from './components/intro/jm'; 
import { IntroNfc } from './components/intro/nfc'; 
import { IntroTxn } from './components/intro/txn'; 

import './assets/sass/main.scss'; 
import './static/css/main.scss'; 
import './static/css/pure.min.scss'; 
import './App.scss'; 

let browserHistory = createHistory(); 

class App extends Component { 

    componentDidMount() { 
    browserHistory.push("/intro/jm"); 
    } 

    render() { 
    return (
     <Provider store={store}> 
     <div> 
      <Router> 
      <div> 
       <Route path="/intro/jm" component={IntroJm} /> 
       <Route path="/intro/nfc" component={IntroNfc} /> 
       <Route path="/intro/txn" component={IntroTxn} /> 
      </div> 
      </Router> 
     </div> 
     </Provider> 
    ); 
    } 
} 

export default App; 

所有的路由組件只用span標籤簡單的組件。

請幫

+0

不工作。我已經嘗試過了。但是因爲它的反應路由器dom,它不是需要反正 –

+0

代碼看起來不錯,我可以擺脫該componentDidMount功能,並使用鏈接組件導航? – azium

+0

我也嘗試過,在這種情況下,第一個組件會呈現在我第一次導航的位置。但其他組件不渲染。 –

回答

0

你可以嘗試用包裝的WithRouter組件,然後改變與this.props.history.push()

路線嘗試

import React, { Component } from 'react'; 
import { Provider } from "react-redux"; 
import { 
    BrowserRouter as Router, 
    Route 
} from "react-router-dom"; 
import {withRouter} 'react-router'; 

import store from "./store"; 

import { IntroJm } from './components/intro/jm'; 
import { IntroNfc } from './components/intro/nfc'; 
import { IntroTxn } from './components/intro/txn'; 

import './assets/sass/main.scss'; 
import './static/css/main.scss'; 
import './static/css/pure.min.scss'; 
import './App.scss'; 

let browserHistory = createHistory(); 

class App extends Component { 

    componentDidMount() { 
    this.props.history.push("/intro/jm"); 
    } 

    render() { 
    return (
     <Provider store={store}> 
     <div> 
      <Router> 
      <div> 
       <Route path="/intro/jm" component={IntroJm} /> 
       <Route path="/intro/nfc" component={IntroNfc} /> 
       <Route path="/intro/txn" component={IntroTxn} /> 
      </div> 
      </Router> 
     </div> 
     </Provider> 
    ); 
    } 
} 

export default withRouter(App); 
+0

你有機會檢查這個答案。它有幫助嗎? –