我正在使用React Router4。我有两个组件1-ShopLogin 2-购物者。单击按钮后,我试图从ShopLogin组件重定向到Shopper组件。
一切正常。单击按钮后,URL也在更改。我也可以看到“你好”。
但是问题是单击按钮后,我能够在浏览器上看到这两个组件。组件未刷新。不知道为什么会这样。下面是我的代码。

import React from 'react';
import PropTypes from 'prop-types';


export class ShopLogin extends React.Component {
constructor(props) {
    super(props);
    this.state = {
    };
}
SignIn(e) {
    e.preventDefault();
    this.context.router.history.push('/shopper');

}

render() {
    return (
        <div>
        <button onClick={this.SignIn.bind(this)}>SignIn</button>
        </div>
    );
    }
   }

ShopLogin.contextTypes = {
router: PropTypes.object
}


export default ShopLogin;


我的Index.js

import React from 'react';

import ReactDOM from 'react-dom';

import ShopLogin from './ShopLogin';

import Shopper from './Shopper';

import { HashRouter,Route } from 'react-router-dom';


 ReactDOM.render((

 <HashRouter>

  <div>

  <Route path="/" component={ShopLogin} />

  <Route path="/shopperlogin" component={ShopLogin} />

  <Route path="/shopper" component={Shopper} />

   </div>
 </HashRouter>
   ), document.getElementById('root'))


我的Shopper.js

import React, { Component } from 'react';


export class Shopper extends Component {

 constructor(props)
{

super(props);

   this.state = {
    };

}

 render()
 {

return (
  <div>
 Hello   </div>
);
}
}


export default Shopper;

最佳答案

自路由'/shopper'以来,它将显示多个组件。路由成功检查到路径为'/'的ShopLogin组件,并且成功检查到路径为'/shopper'的购物者组件。

我会创建一个父组件仅显示子组件并定义路线的Main


从react-router导入IndexRoute

import { HashRouter,Route, IndexRoute } from 'react-router-dom';

利用您的路线

<HashRouter>
    <Route path='/' component={Main}>
        <Route path='/shopper' component={Shopper} />
        <IndexRoute component={ShopLogin} />
    </Route>
</HashRouter>

为ShopLogin和Shopper组件创建父组件

class Main extends Component {
    render(){
        return (
            <div>
                {this.props.children}
            </div>
        )
}

09-26 10:34