Link to(react-router-dom) 单击按钮时的条件渲染
Link to(react-router-dom) conditional rendering when a button is clicked
如果在文本框中输入用户,将转到用户页面,如果输入管理员,将转到管理页面。
这是我的代码。
constructor(props) {
super(props);
this.state = {
userType : 0
};
this.handleLogin = this.handleLogin.bind(this);
}
如果 userType
为 0,则尝试转到用户页面,如果为 1,则尝试转到管理页面。
handleLogin() {
if(this.state.id==='admin'){
this.setState({userType : 1});
}
else{
this.setState({userType : 0});
}
}
我在输入管理员时将 userType
更改为 1。
我已经确认它在这次操作之前效果很好。
<Link to={this.state.userType === 0 ? '/userPage' : '/adminPage'}>
<button className='loginButton' onClick={this.handleLogin}>Login</button>
</Link>
问题好像出在这部分。
但我不知道如何解决它。
请给我一个解决方案。
您不应同时使用 Link 和按钮。
你可以简单地这样做:
<Link to={this.state.id==='admin' ? '/adminPage' : '/userPage'}>
Login
</Link>
如果您想在 onClick
事件中将用户重定向到另一个页面,那么 histoty.push()
是正确的方法。此处应使用声明式路由。你可以这样实现-
handleLogin() {
if(this.state.id==='admin'){
this.props.history.push("/adminPage");
}
else{
this.props.history.push("/userPage");
}
}
<button className='loginButton' onClick={this.handleLogin}>Login</button>
如果在文本框中输入用户,将转到用户页面,如果输入管理员,将转到管理页面。
这是我的代码。
constructor(props) {
super(props);
this.state = {
userType : 0
};
this.handleLogin = this.handleLogin.bind(this);
}
如果 userType
为 0,则尝试转到用户页面,如果为 1,则尝试转到管理页面。
handleLogin() {
if(this.state.id==='admin'){
this.setState({userType : 1});
}
else{
this.setState({userType : 0});
}
}
我在输入管理员时将 userType
更改为 1。
我已经确认它在这次操作之前效果很好。
<Link to={this.state.userType === 0 ? '/userPage' : '/adminPage'}>
<button className='loginButton' onClick={this.handleLogin}>Login</button>
</Link>
问题好像出在这部分。 但我不知道如何解决它。 请给我一个解决方案。
您不应同时使用 Link 和按钮。 你可以简单地这样做:
<Link to={this.state.id==='admin' ? '/adminPage' : '/userPage'}>
Login
</Link>
如果您想在 onClick
事件中将用户重定向到另一个页面,那么 histoty.push()
是正确的方法。此处应使用声明式路由。你可以这样实现-
handleLogin() {
if(this.state.id==='admin'){
this.props.history.push("/adminPage");
}
else{
this.props.history.push("/userPage");
}
}
<button className='loginButton' onClick={this.handleLogin}>Login</button>