reactjs - 如何以 formik 形式从 DOM 中删除空的错误 div?
问题描述
我在身份验证页面中有以下代码来控制警报消息:
<div className="messages-wrapper">
{formik.errors.email &&
<div className="alert alert-danger">
<ErrorMessage name="email" />
</div>
}
{formik.errors.password &&
<div className="alert alert-danger">
<ErrorMessage name="password" />
</div>
}
{error && <div className="alert alert-danger">{error}</div>}
</div>
我意识到有时在 DOM 中它有:
<div class="alert alert-danger"></div>
结果,显示屏中出现粉红色条。
有谁知道如何实现这样我们只在有文本时显示一个警告栏?
解决方案
确保初始化所有输入/字段值(可能是您忘记初始化电子邮件的值?
我试图复制您的问题,当我不初始化任何字段值时,我能够看到空的粉红色条。
...
<Formik
initialValues={{ email: "", password: "" }} // <---- correct - both email and password are initialised
// initialValues={{ password: "" }} // <--- wrong, email is not initialised. With this, there will be empty pink bar issue
validate={validate}
onSubmit={(values, actions) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
actions.setSubmitting(false);
}, 1000);
}}
...
如果有用,请参阅我在代码沙箱中创建的这个示例
最后,我不确定你为什么有这行代码{error && <div className="alert alert-danger">{error}</div>}
。也检查一下。祝你好运。
推荐阅读
- python - 程序有效但没有产生正确的输出?
- swift - 斯威夫特:核心数据获取请求核心数据实体数组
- python - 带有 AWS codebuild 的 Virtualenv python:为什么找不到 deactivate 命令?
- python-3.x - 如果趋势和季节性都存在,我们应该先删除哪个
- php - 如何覆盖 Magento 2 中的目录搜索结果?
- php - 为什么 PHP 的这些混淆器不隐藏`system`
- ms-access - 在 Access-VBA 中使用 SQL 查询仅创建非重复记录
- node.js - 回调不是sqlite中的函数
- mysql - 如何在一个表中显示条件来自另一张表的记录?
- odoo - Qweb:如何在 Qweb 上使用方法 sort() 或函数 sorted()?