重定向更改页面URL但不呈现新页面

Bla*_*ack 5 javascript reactjs react-router react-router-dom

我有一个页面验证用户并在验证成功时将其重定向到登录页面.但是,使用redirectURL更改但Login不呈现新页面.如何才能渲染新页面?

App.js

var child;

render() {
if (this.state.toLogin && !this.state.mounted) {
    <Route exact path="/Login" component={Login} />;
    <Route exact strict path="/" render={({location}) => {
       if (location.pathname === window.location.pathname) {
             return <Redirect to="/Login"/>;
        }
    return null;
}}

return(
    <div className="App">
        <ReactCSSTransitionGroup
            transitionName="remove"
            transitionEnterTimeout={100}
            transitionLeaveTimeout={100}>
                {child}
        </ReactCSSTransitionGroup>
    </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

Index.js

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

编辑:根据答案进行更改,但现在URL没有更改,页面也没有呈现

han*_*man 5

如果你使用react-router-dom包裹你的组件导出withRouter提供者react-router-dom.

并且应该从渲染返回所有组件用法.然后只有反应知道要渲染什么.

import React from 'react'
import { withRouter, Redirect } from 'react-router-dom';

class App extends React.Component {

render() {
if (this.state.toLogin && !this.state.mounted) {
  return (
    <React.Fragment>
      <Route exact path="/Login" component={Login} /> 
      <Route exact strict path="/" render={({location}) => {
          if (location.pathname === window.location.pathname) {
              return <Redirect to="/Login"/>;
          }
          return null;
      }} />
  </React.Fragment>
  );
}

return (
  <div className="App">
    <ReactCSSTransitionGroup
        transitionName="remove"
        transitionEnterTimeout={100}
        transitionLeaveTimeout={100}>
            {child}
    </ReactCSSTransitionGroup>
</div>
)}

}
export default withRouter(App)
Run Code Online (Sandbox Code Playgroud)