【发布时间】:2020-12-22 08:03:33
【问题描述】:
我正在尝试根据存储在挂钩中的状态呈现三个不同的组件。
状态通过“onSubmit”函数发送,该函数接受响应,如果成功则将“submitted”设置为 true,或者将“error”设置为 false。
但是,当我尝试进行条件渲染时,如果出现“错误 === true”或“已提交 === true”,然后是整个组件(如果两者都不适用),则根本不会显示组件.
谁能指出我在这里做错了什么?
这是我的代码:
const WaitingListComponent = () => {
const [email, setEmail] = useState('')
const [submitted, setSubmitted] = useState(false)
const [error, setError] = useState(false)
const onSubmit = async (e) => {
e.preventDefault()
await axios.post("/api/waiting-list/addToList", {
email: email
})
.then((response) => {
setSubmitted(true)
})
.catch((err) => {
setError(true)
})
}
const errorComponent = () => {
return (
<form className="waiting-list-component-container" onSubmit={onSubmit}>
<span className="waiting-list-success-span">
<i className="fas fa-times-circle fa-3x waiting-list-error"></i>
<p className="waiting-list-success-paragraph">Oops. Seems like there's been a problem. Please try again.</p>
</span>
</form>
)
}
const successComponent = () => {
return (
<form className="waiting-list-component-container" onSubmit={onSubmit}>
<span className="waiting-list-success-span">
<i className="fas fa-check-circle fa-3x waiting-list-success"></i>
<p className="waiting-list-success-paragraph">Thanks for signing up to our waiting list. A confirmation email is flying your way now.</p>
</span>
</form>
)
}
const form = () => {
return (
<form className="waiting-list-component-container" onSubmit={onSubmit}>
<h4 className="waiting-list-component-heading">Join our waiting list to get early access</h4>
<p className="waiting-list-component-paragraph">Like the sound of us? Join our waiting list to get exclusive early access to our platform when we're ready to launch.</p>
<input className="waiting-list-component-input" name="email" type="email" value={email} onChange={(e) => setEmail(e.target.value)} placeholder="janedoe@email.com" />
<GeneralButton type="submit" text="Get access" />
</form>
)
}
return (
<>
{ error === true ? errorComponent : submitted === true ? successComponent : form }
</>
)
}
【问题讨论】:
标签: reactjs