如何在react js中的onclick事件上隐藏和显示路由器组件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在react js中的onclick事件上隐藏和显示路由器组件相关的知识,希望对你有一定的参考价值。
我试图隐藏并在REACTJS中的onclick事件上显示路由器组件。但是我没有找到我能做到的方式。请帮助我。这是我的代码 -
import React from 'react';
import { BrowserRouter as Router,Route, Link, Switch} from 'react-router-dom';
import SignIn from './SignIn'
export default class Clicksigningin extends React.Component{
render(){
return(
<div>
<Router>
<div>
<Link to={'/SignIn'}><button className='btn btn-danger'>Sign In</button></Link>
<Switch>
<Route exact path = '/SignIn' component = {SignIn} />
</Switch>
</div>
</Router>
</div>
)
}
}
答案
更好的方法是摆脱这个特定组件的路由器。在单个组件(比如SignIn)中,您可以使用一个按钮来切换(显示/隐藏)signIn部分。
import React from 'react';
import { BrowserRouter as Router,Route, Link, Switch} from 'react-router-dom';
import SignIn from './SignIn'
export default class Clicksigningin extends React.Component{
constructor(props){
super(props);
this.state={showSignInPage:false}
}
toggleSignIn(){
this.setState({showSignInPage:!this.state.showSignInPage});
}
render(){
return(
<div>
{this.state.showSignInPage && <SignIn/>}
<button className='btn btn-danger' onClick={()=>this.toggleSignIn()}>Sign In</button>
</div>
</Router>
</div>
)
}
PS:代码我还没有测试过。
另一答案
你可以这样做
import React from "react";
import ReactDOM from "react-dom";
import {
BrowserRouter as Router,
Route,
Link,
Switch,
Redirect
} from "react-router-dom";
function SignIn() {
return "hello";
}
class App extends React.Component {
state = {
current: ""
};
toggle = () => {
this.setState({ current: this.state.current==''?"SignIn":"" })
};
render() {
return (
<Router>
<div>
{this.state.current == "SignIn" ? (
<Redirect to="/SignIn" />
) : (
<Redirect to="" />
)}
<button className="btn btn-danger" onClick={this.toggle}>
Sign In
</button>
<Switch>
<Route exact path="/SignIn" component={SignIn} />
</Switch>
</div>
</Router>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
以上是关于如何在react js中的onclick事件上隐藏和显示路由器组件的主要内容,如果未能解决你的问题,请参考以下文章