反应路由重定向 onClick

Yas*_*ank 7 javascript reactjs react-router

我一直在尝试在单击按钮时对另一个组件进行简单的重定向,但由于某种原因它不起作用。我想重定向到“/仪表板”并从登录显示 AdminServices,如下所示:

//index.js

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

//App.js

     <Switch>
          <Route path="/" component={Login} />
          <Route path="/dashboard" component={AdminServices} />
        </Switch>
Run Code Online (Sandbox Code Playgroud)

//登录.js

<Button
onClick={this.login}
>
</Button>

login = () =>{
    <Redirect to="/dashboard" />
  }
Run Code Online (Sandbox Code Playgroud)

//AdminServices.js

render(){
        return(
            <div>Test</div>
        );
    }
Run Code Online (Sandbox Code Playgroud)

小智 20

在react-router-dom v6中,您可以使用useNavigate(),如此处回答

import { useNavigate } from 'react-router-dom';

const navigate = useNavigate();
navigate('/dashboard');
Run Code Online (Sandbox Code Playgroud)

如果您仍在使用以前的版本,则可以使用TellisenseuseHistory提到的。

import { useHistory } from 'react-router-dom';

const navigate = useHistory();
navigate.push('/dashboard');
Run Code Online (Sandbox Code Playgroud)


Tel*_*nse 16

除了使用 props.history,更好的方法是使用 useHistory 钩子,如下所示:

import { useHistory } from 'react-router-dom'

const MyComponent = (props) => {
  const history = useHistory();

  handleOnSubmit = () => {
    history.push(`/dashboard`);
  };
};
Run Code Online (Sandbox Code Playgroud)


Adn*_*hah 8

你可以这样按功能路由

  handleOnSubmit = () => {
  this.props.history.push(`/dashboard`);
  };
Run Code Online (Sandbox Code Playgroud)

希望这有帮助

  • 我认为这应该有帮助 (2认同)