1

我有一个非常简单的项目,反应路由器 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 标签的简单组件。

请帮忙

4

1 回答 1

1

您可以尝试使用 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);
于 2017-06-12T19:02:51.947 回答