我是React世界的新手。我有以下功能组件的登录页面。
我想它呈现OtpInput
组件时,用户点击Verify Email
按钮,并没有错误,即。emailError
为空。
import { BaseSyntheticEvent, useState } from 'react';
import { Button } from '@fluentui/react-components';
import styles from './Login.module.scss';
import LoginField from '../../core/components/LoginField';
import OtpInput from '../../core/components/multi-factor-authentication/Multi-factor-authentication';
export default function Login(): JSX.Element {
const [email, setEmail] = useState('');
const [emailError, setEmailError] = useState('');
// Multi-factor authentication.
const [otp, setOtp] = useState('');
const onChangeOtp = (value: string) => setOtp(value);
const handleVerifyEmail = (): void => {
if (email) {
setEmailError('');
} else if (!email) {
setEmailError('Please enter your email.');
}
};
const div = (
<div className={styles.loginContainer}>
<div className={styles.loginSection}>
<div className={styles.loginControls}>
<div className={styles.logoContainer}>
<div className={styles.logo} />
<h1 color="secondary">Alytic</h1>
</div>
<LoginField
title="Email"
required
size="large"
onChange={(e: BaseSyntheticEvent) => setEmail(e.target.value)}
validationState={emailError ? 'error' : undefined}
validationMessage={emailError}
label="Email"
/>
<Button onClick={handleVerifyEmail}>Verify Email</Button>
</div>
</div>
{emailError !== '' ? (
<div>
<h1>Enter your code</h1>
<h3>Enter the 6-digit security code from your authenticator app.</h3>
<OtpInput value={otp} valueLength={6} onChange={onChangeOtp} />
<Button appearance="primary" shape="rounded" size="medium">
Continue
</Button>
</div>
) : (
<div>
<p>Test</p>
</div>
)}
<div className={styles.loginImage} />
</div>
);
return div;
}
2条答案
按热度按时间yvgpqqbh1#
原因是因为如果电子邮件是好的,
emailError !== ''
将是假的。有一个单独的状态来标记电子邮件是否经过验证。保留emailError
仅用于验证消息。e5nszbig2#
您可以使用Ternary Operator来有条件地呈现组件。
在函数中定义条件的逻辑,然后定义一个布尔变量来保存条件的状态,并在呈现组件之前使用该变量来检查和评估条件。
请查看下面的文章,以获得更多关于react Conditional Rendering in React中条件渲染的见解