- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的内容包装器,它将显示 SignUp
组件或 SignIn
组件。
const Content = (props) => {
return (
<div className="wrapper">
<SignIn/>
<SignUp/>
</div>
)
};
export default Content;
这是我的注册组件
class SignUp extends React.Component {
state = {
email: '',
username: '',
password: '',
second_password: '',
showModal: false,
modalMessage: '',
modalHeader: ''
};
handleSubmit = async (event) => {
event.preventDefault();
const emailValidated = await this.validateEmail(this.state.email);
const usernameValidated = this.validateUsername(this.state.username);
const passwordValidated = this.validatePassword(this.state.password, this.state.second_password);
if (emailValidated === true){
if(usernameValidated === true){
if(passwordValidated === true){
const registrationComplete = await this.register(this.state.email, this.state.username, this.state.password);
if (registrationComplete === true) {
this.setState(prevState => ({
...prevState,
showModal: true,
modalMessage: "Please check your mail to activate your account",
modalHeader: "Success!"
}));
}else{
this.setState(prevState => ({
...prevState,
showModal: true,
modalMessage: "Something went wrong with the registration. Please try again later.",
modalHeader: "Failure!"
}));
}
}else{
this.setState(prevState => ({
...prevState,
showModal: true,
modalMessage: "Passwords do not match",
modalHeader: "Failure!"
}));
}
}else{
this.setState(prevState => ({
...prevState,
showModal: true,
modalMessage: "Username should be a minimum of 8 characters long",
modalHeader: "Failure!"
}));
}
}else{
this.setState(prevState => ({
...prevState,
showModal: true,
modalMessage: "An account with that email already exists.",
modalHeader: "Failure!"
}));
}
};
validateUsername = (username) => {
return username.trim().length >= 8;
};
validatePassword = (password, second) => {
return password.trim() === second.trim();
};
validateEmail = async (email) => {
const resp = await axios({
method: 'post',
url: 'bouncr/user/exists',
data: {"email": email}
});
return resp.status === 200
};
register = async (email, username, password) => {
const resp = await axios({
method: 'post',
url: 'bouncr/user/register',
data: {'email': email, 'username': username, 'password': password}
});
return resp.status === 201
};
onClose = () => {
this.setState(prevState => ({...prevState, showModal: false, modalMessage: '', modalHeader: ''}));
};
render() {
return (
<div>
<CustomModal
showModal={this.state.showModal}
onClose={this.onClose}
modalMessage={this.state.modalMessage}
modalHeader={this.state.modalHeader}
/>
<div className="register">
<h1>Sign Up</h1>
<Form onSubmit={this.handleSubmit}>
<Form.Group controlId="email">
<Form.Label>Email address</Form.Label>
<Form.Control type="email"
placeholder="Enter email"
value={this.state.email}
onChange={event => this.setState({email: event.target.value})}/>
<Form.Text className="text-muted">
Please make sure you've access to this mail. You'll receive an activation code here.
</Form.Text>
</Form.Group>
<Form.Group controlId="username">
<Form.Label className="form-label">Username</Form.Label>
<Form.Control type="text"
placeholder="Username"
value={this.state.username}
onChange={event => this.setState({username: event.target.value})}/>
<Form.Text className="text-muted">
Please make it atleast 8 characters long.
</Form.Text>
</Form.Group>
<Form.Group controlId="password">
<Form.Label>Password</Form.Label>
<Form.Control type="password"
placeholder="Password"
value={this.state.password}
onChange={event => this.setState({password: event.target.value})}/>
<Form.Text className="text-muted">
Please make sure it's atleast 8 characters long and uses a mix of letters and numbers.
</Form.Text>
</Form.Group>
<Form.Group controlId="confirmPassword">
<Form.Label>Confirm Password</Form.Label>
<Form.Control type="password"
placeholder="Password"
value={this.state.second_password}
onChange={event => this.setState({second_password: event.target.value})}/>
</Form.Group>
<Button variant="primary" type="submit">
Sign Up
</Button>
<hr/>
<p onClick={() => this.props.setIsNew(false)}>
If you don't have an account, Sign Up
</p>
</Form>
</div>
</div>
);
}
}
export default SignUp;
这是 SignIn 组件。
const SignIn = () => {
return (
<div className="sign-up">
<h1>Sign In</h1>
<Form>
<Form.Group controlId="email">
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="Enter email"/>
<Form.Text className="text-muted">
</Form.Text>
</Form.Group>
<Form.Group controlId="password">
<Form.Label>Password</Form.Label>
<Form.Control type="password" placeholder="Password"/>
</Form.Group>
<Form.Group controlId="formBasicCheckbox">
<Form.Check type="checkbox" label="Remember me"/>
</Form.Group>
<Button variant="primary" type="submit">
Sign In
</Button>
<hr/>
<p>If you don't have an account, Sign Up</p>
</Form>
</div>
)
};
export default SignIn;
我希望按钮下方的文本路由到相关组件。我如何使用 React 路由器做到这一点?
最佳答案
管理父组件中的状态。这是使用钩子(Hook)的基本示例。该组件将根据其状态确定渲染哪个子组件。
const Content = props => {
const [isNew, setIsNew] = useState(true);
return (
<div className="wrapper">
{isNew ? <SignUp setIsNew={setIsNew} /> : <SignIn setIsNew={setIsNew} />}
</div>
);
};
export default Content;
将 setIsNew 传递给子级并使用适当的 bool 值进行调用。我们传递此函数并将其绑定(bind)到 onClick
处理程序。
const SignIn = ({setIsNew}) => {
return (
<div className="sign-up">
<h1>Sign In</h1>
<Form>
<Form.Group controlId="email">
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="Enter email" />
<Form.Text className="text-muted"></Form.Text>
</Form.Group>
<Form.Group controlId="password">
<Form.Label>Password</Form.Label>
<Form.Control type="password" placeholder="Password" />
</Form.Group>
<Form.Group controlId="formBasicCheckbox">
<Form.Check type="checkbox" label="Remember me" />
</Form.Group>
<Button variant="primary" type="submit">
Sign In
</Button>
<hr />
<p onClick={() => setIsNew(true)}>
If you don't have an account, Sign Up
</p>
</Form>
</div>
);
};
export default SignIn;
与登录
相同。
const SignUp = ({setIsNew}) => {
return (
<div className="sign-up">
<h1>Sign In</h1>
<Form>
<Form.Group controlId="email">
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="Enter email" />
<Form.Text className="text-muted"></Form.Text>
</Form.Group>
<Form.Group controlId="username">
<Form.Label>Email address</Form.Label>
<Form.Control type="email" placeholder="Username" />
<Form.Text className="text-muted"></Form.Text>
</Form.Group>
<Form.Group controlId="password">
<Form.Label>Password</Form.Label>
<Form.Control type="password" placeholder="Password" />
</Form.Group>
<Form.Group controlId="confirmPassword">
<Form.Label>Password</Form.Label>
<Form.Control type="password" placeholder="Confirm Password" />
</Form.Group>
<Button variant="primary" type="submit">
Sign In
</Button>
<hr />
<p onClick={() => setIsNew(false)}>
If you don't have an account, Sign Up
</p>
</Form>
</div>
);
};
export default SignUp;
关于javascript - SignUp 和 SignIn 组件之间的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59513292/
我在 Django 中收到页面未找到 404 错误。尽管我已在主应用和此应用中正确映射了 URL。 urlpatterns = [ path('',views.mainpage,name='m
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
select date_format(payout.date, '%m/%d/%Y') as Date, (select commission.PAYOUTID from commission
我是 Laravel 新手。我正在学习如何创建用户注册页面。一切正常,但我陷入了一个简单的问题。 ErrorException in UrlGenerator.php line 304: Route
我正在通过注册和登录在我的应用程序中实现 Fire-Base 身份验证,但是我遇到了一个问题,每次我填写表格并单击“注册”按钮时,Fire-Base 都会返回一个错误,即使帐户已成功创建。我的 Sig
我想通过用户输入存储用户名,但收到以下错误: `AttributeError` at /sign/ `'signup' object has no attribute 'get'` 这是我尝试运行的相
我尝试使用 Crispy-form 增强我所有授权的注册表单,但它不起作用:) 我修改forms.py中的allauth表单,隐藏标签,添加按钮 我目前的问题是 forms.py 中的“self.he
我正在为网站使用 Firebase 身份验证并选择密码身份验证和 Google 登录。当我运行它时,我得到以下信息: {"error":{"code":403,"message":"Requests
是否有关于使用github验证用户身份的文档?最好在PHP中。 像这里的按钮:http://coderwall.com/ 最佳答案 是的,它记录在GitHub API OAuth section的do
这是我的内容包装器,它将显示 SignUp 组件或 SignIn 组件。 const Content = (props) => { return (
我想在用户注册过程失败后重定向到“/signup”页面。你是怎么做到的? 每次注册失败,它都重定向到“/users”,这不是我想要的,我希望它重定向到注册页面。 TIA 最佳答案 您必须在初始化程序中
我听说 Mixpanel 中的“$signup”事件有些特别。它具体有什么作用? 我所能找到的都是非常模糊的陈述,例如“您的报告的性能会略有改善”和“$signup 对于保留分析特别有用。” 最佳答案
我将 Parse.com 用于我的应用程序数据库和我的注册 View ,我正在尝试减少代码中的行数。 user.set("username",$scope.user.email); user.set(
Ajax 新手,开始使用 Javascript 和 jQuery。 我有一个以提交按钮结尾的表单,JavaScript 通过一组 function signup(){ 将验证字段和其他要求。到这里为止
下面是代码,希望有人能帮我解决使用未解析的标识符“SignUp”问题: @IBOutlet var UsernameTextField: UITextField! @IBOutlet var Pass
我想向我的解析 SignUp 函数添加一个额外的属性。我的代码就像 signUp: function(e) { var self = this; var username = this.$("
我刚刚在 ubuntu 14.04 服务器上使用 apache 部署了我的 django 站点。正在访问该站点。但是当我以用户身份注册到其中时,它会创建用户但无法创建与我的用户处于一对一关系的用户配置
许多较新的网站都有 neat-o 注册表单。我做 c++/java 开发,正在进入 web 开发,css 对我来说还是有点神秘。 如果我想创建一个像 twitter.com/signup 这样的页面,
我正在使用 React、node.js 和 AWS cognito 创建一个注册页面。处理注册事件时,我收到错误 'aws_amplify__WEBPACK_IMPORTED_MODULE_2___d
我想知道是否有人知道是否可以在 django-allauth 中完全禁用表单登录/注册. 在我的业务模型中,用户只能使用 Facebook 登录/注册,但是每当我使用 @login_required
我是一名优秀的程序员,十分优秀!