ReactJS Formik 以红色显示错误消息
ReactJS Formik display error message in Red color
在 ReactJS 中,我正在开发一个 Class 组件并使用 Formik 进行验证。我能够进行验证,但错误消息显示为正常颜色(黑色)。如何在任何 HTML 元素(跨度、div 等)中添加此错误消息。
下面是验证代码
import React, { Component } from 'react'
import { useFormik } from 'formik';
import { Formik, FormikProps, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
export class SubmitCase extends Component {
handleSubmit = (values, {
props = this.props,
setSubmitting
}) => {
setSubmitting(false);
return;
}
render() {
const formFields = {...this.state};
return (
<Formik
initialValues={{
subject: formFields.subject
}}
validate={(values) => {
let errors = {};
if(!values.subject)
errors.subject = "subject Required";
//check if my values have errors
return errors;
}
}
onSubmit={this.handleSubmit}
render={formProps => {
return(
<Form>
<Field type="text" placeholder="First Name" name="subject" value={formFields.subject} onChange={this.changeEventReact}/>
<ErrorMessage name="subject" />
<button type="submit">
Submit Form
</button>
</Form>
);
}}
/>);
}
}
我正在使用来显示消息。错误消息显示为普通文本(黑色文本)。怎么改成红色。
Form formik docs <ErrorMessage>
组件接受子属性作为函数 children?: ((message: string) => React.ReactNode)
所以你可以通过 return 一个包装错误消息的组件来实现你想要的
<ErrorMessage name="subject">
{ msg => <div style={{ color: 'red' }}>{msg}</div> }
</ErrorMessage>
您也可以制作 css 文件,例如 - ErrorMessage.css
正文:
.validation-error-message {
color: red;
}
并制作 js 文件,例如 - validators.js
正文:
import './ErrorMessage.css';
export const ErrorMessageWrapper = (msg) => {
return (
<div className='validation-error-message'>
{msg}
</div>
)
}
并导入和使用:
<ErrorMessage name="newPostText">
{ErrorMessageWrapper}
</ErrorMessage>
您可以在 ErrorMessage 中将 component
道具与自定义 类 结合使用。
例如
<ErrorMessage component="div" name="name" className="help-block errors" />
<ErrorMessage component="div" name="email" />
// --> {touched.email && error.email ? <div>{error.email}</div> : null}
<ErrorMessage component="span" name="email" />
// --> {touched.email && error.email ? <span>{error.email}</span> : null}
<ErrorMessage component={Custom} name="email" />
// --> {touched.email && error.email ? <Custom>{error.email}</Custom> : null}
<ErrorMessage name="email" />
// This will return a string. React 16+.
// --> {touched.email && error.email ? error.email : null}
在 ReactJS 中,我正在开发一个 Class 组件并使用 Formik 进行验证。我能够进行验证,但错误消息显示为正常颜色(黑色)。如何在任何 HTML 元素(跨度、div 等)中添加此错误消息。
下面是验证代码
import React, { Component } from 'react'
import { useFormik } from 'formik';
import { Formik, FormikProps, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
export class SubmitCase extends Component {
handleSubmit = (values, {
props = this.props,
setSubmitting
}) => {
setSubmitting(false);
return;
}
render() {
const formFields = {...this.state};
return (
<Formik
initialValues={{
subject: formFields.subject
}}
validate={(values) => {
let errors = {};
if(!values.subject)
errors.subject = "subject Required";
//check if my values have errors
return errors;
}
}
onSubmit={this.handleSubmit}
render={formProps => {
return(
<Form>
<Field type="text" placeholder="First Name" name="subject" value={formFields.subject} onChange={this.changeEventReact}/>
<ErrorMessage name="subject" />
<button type="submit">
Submit Form
</button>
</Form>
);
}}
/>);
}
}
我正在使用来显示消息。错误消息显示为普通文本(黑色文本)。怎么改成红色。
Form formik docs <ErrorMessage>
组件接受子属性作为函数 children?: ((message: string) => React.ReactNode)
所以你可以通过 return 一个包装错误消息的组件来实现你想要的
<ErrorMessage name="subject">
{ msg => <div style={{ color: 'red' }}>{msg}</div> }
</ErrorMessage>
您也可以制作 css 文件,例如 - ErrorMessage.css 正文:
.validation-error-message {
color: red;
}
并制作 js 文件,例如 - validators.js 正文:
import './ErrorMessage.css';
export const ErrorMessageWrapper = (msg) => {
return (
<div className='validation-error-message'>
{msg}
</div>
)
}
并导入和使用:
<ErrorMessage name="newPostText">
{ErrorMessageWrapper}
</ErrorMessage>
您可以在 ErrorMessage 中将 component
道具与自定义 类 结合使用。
例如
<ErrorMessage component="div" name="name" className="help-block errors" />
<ErrorMessage component="div" name="email" />
// --> {touched.email && error.email ? <div>{error.email}</div> : null}
<ErrorMessage component="span" name="email" />
// --> {touched.email && error.email ? <span>{error.email}</span> : null}
<ErrorMessage component={Custom} name="email" />
// --> {touched.email && error.email ? <Custom>{error.email}</Custom> : null}
<ErrorMessage name="email" />
// This will return a string. React 16+.
// --> {touched.email && error.email ? error.email : null}