reactjs - 如何控制反应路由器上的链接
问题描述
我正在尝试建立一个登录,我验证输入和数据,问题是当输入错误时我不知道如何禁用链接。我的意思是,当用户名和密码错误时,我不希望继续登录。
我可以禁用链接吗?或者我需要另一个解决方案我真的想不出另一个解决方案,希望你能帮助我。
import { Link } from 'react-router-dom';
class Index extends Component {
state = {
info: {
email: '',
password: ''
},
login: {
email: 'Email.@gmail.com',
password: '1234'
}
};
updateInfo = e => {
this.setState({
info: { ...this.state.login, [e.target.name]: e.target.value }
});
};
submit = e => {
e.preventDefault();
if (
this.state.info.email === this.state.login.email &&
this.state.info.password === this.state.login.password
) {
console.log('true');
} else {
console.log('false');
}
};
render() {
return (
<div className="text-center container mt-4" style={{ width: '50%' }}>
<form className="px-4 py-3" onSubmit={this.submit}>
<div className="form-group">
<label>Email: </label>
<input
type="text"
placeholder="Email@example.com"
className="form-control"
name="email"
value={this.state.info.email}
onChange={this.updateInfo}
/>
</div>
<div className="form-group">
<label>Password: </label>
<input
type="text"
placeholder="Password"
className="form-control"
name="password"
value={this.state.info.password}
onChange={this.updateInfo}
/>
</div>
<Link to="Profile">
<button type="submit" className="btn btn-secondary mt-3">
Sign in
</button>
</Link>
<div>
<Link to="/register" className="badge badge-light p-2 m-2">
Register
</Link>
</div>
</form>
</div>
);
}
}
export default Index;
解决方案
<button type="submit" className="btn btn-secondary mt-3">
Sign in
</button>
您只需删除链接并保留按钮,然后在登录成功后即可使用:-
this.props.history.push('/Profile');
或从 'react-router-dom' 导入 { Redirect }
<Redirect to='/target' />
推荐阅读
- bash - echo 'pcm.!default { type plug slave.pcm 'hw:Loopback,0,0" }' >> ~/.asoundrc
- postgresql - Postgres 将列从 TEXT 更改为 INTEGER 会增加表大小
- php - dynamic tab bootstrap creation doesn't work well
- html - Flex:图像顶部,文本底部。使用纵横比图像扩展剩余高度。
- dsl - Xtext如何通过实例通过限定名引用变量?
- c - 检查c中的多输入字符
- php - 使用 Auth 查找用户 - Laravel
- regex - RegExp 未返回所需的结果
- php - 用最少的字符进行排序*对于散列密码是必需的*
- c++ - 如何使用 C++ boost 库为特定线程定义堆栈大小?