javascript - 如何根据数据挂钩显示内容?
问题描述
我不明白为什么我的代码没有在我的表单中显示我想要的条目。当我的用户输入已在使用的电话号码时,我想显示带有危险消息的无效条目。
我检查用户输入并检查布尔显示案例。
当我输入已使用的电话号码时,这是我的布尔值:
phoneAlreadyUsed: true
phoneCharged: false
phoneTouched: true
phoneValid: true
我的代码检测到它的电话号码已被使用,因此布尔值“phoneAlreadyUsed”为真。
这是我的内容的代码:
<FormGroup className="form-group">
<Label>Phone *</Label>
{userVerification.phoneTouched === false && userVerification.phoneAlreadyUsed === false && (
<Input
type="text"
name="phone"
className="form-control"
value={user ? user.phone : ''}
placeholder={'Enter your phone number'}
onChange={handleChange}
/>
)}
{userVerification.phoneValid === true && userVerification.phoneAlreadyUsed === false && (
<Input
type="text"
name="phone"
className="form-control is-valid"
value={user ? user.phone : ''}
placeholder={'Enter your phone number'}
onChange={handleChange}
/>
)}
{((userVerification.phoneValid === false && userVerification.phoneTouched === true) ||
userVerification.phoneAlreadyUsed === true) && (
<Input
type="text"
name="phone"
className="form-control is-invalid"
value={user ? user.phone : ''}
placeholder={'Enter your phone number'}
onChange={handleChange}
/>
)}
{userVerification.phoneAlreadyUsed === true && (
<div class="invalid-feedback">Sorry, this phone number's taken. Try another?</div>
)}
</FormGroup>
我的代码显示第二个输入(有效),而没有“无效反馈”中的消息。我不明白为什么......你能帮帮我吗?
解决方案
您不必要地重复了大量代码。在您的情况下,所有不同之处在于组件的className
道具。Input
您可以轻松构建它:
//in render
const {phoneTouched, phoneValid, phoneAlreadyUsed} = userVerification;
let className = 'form-control';
if (phoneTouched) {
const valid = phoneValid && !phoneAlreadyUsed;
className += valid ? 'is-valid' : 'is-invalid';
}
return (
<FormGroup className="form-group">
<Label>Phone *</Label>
<Input
type="text"
name="phone"
className={className}
value={user ? user.phone : ''}
placeholder={'Enter your phone number'}
onChange={handleChange}
/>
{phoneAlreadyUsed && (
<div class="invalid-feedback">
Sorry, this phone number's taken. Try another?
</div>
)}
</FormGroup>
);
推荐阅读
- javascript - 如何解决:动作必须是普通对象。使用自定义中间件进行异步操作
- vue.js - 在 Vue.JS 中使用命名最佳实践,我应该使用 `template` 还是 `view`?
- css - 将函数返回的 CSS 添加到 IE11 的样式组件时未应用 CSS?
- ms-word - Office Word javascript API中的onScroll事件
- php - PHP关于进入MYSQL dbase的小写和大写条目
- azure - azure sql 的 azure 用户分配标识失败
- fix-protocol - 一个 FIX 消息被分成 02 个部分。如何链接这些损坏的 FIX 消息集以使其成为完整的 FIX 消息?
- javascript - 输入字符串是否有 . 或者 ?或'或空间?
- google-sheets-formula - 如何使用 Google 表格中的 SPLIT/LEFT/RIGHT 功能将数字与文本分开
- powershell - PowerShell 中的 Autorunsc64 (sysinternals) 命令行问题