reactとformikを使っています。
電話番号にバリデーションを設定したいです。
数字とハイフン以外を入力したらエラーを表示させたいです。
validate関数に電話番号のバリデーションを設定しましたが入力するたびに下記のエラーが表示されてエラーメッセージが表示されません。
わかる人いましたらご教授お願いしたいです
error
36 Uncaught (in promise) TypeError: Cannot create property 'telephoneNumber' on string ''
import React from 'react'; import {Input, Form} from 'antd'; import {useParams} from 'react-router'; import {useFormik} from 'formik'; import {useCreateMutation} from 'api'; export default () => { const {userId} = useParams<{ userId: string; }>(); const [create, {loading}] = useCreateMutation({ onCompleted: () => { resetForm(); }, }); const validate = (values: any) => { const phoneValidation = /^[0-9-]+$/; const errors: any = ''; if (values.telephoneNumber.match(phoneValidation) === null) { errors.telephoneNumber = 'phone error'; console.log(errors); } return errors; }; const formik = useFormik({ enableReinitialize: true, initialValues: { email: null, telephoneNumber: null, }, validate: validate, onSubmit: (values) => { create({ variables: { uuid: userId, attributes: values, }, }); }, }); const {values, errors, handleChange, handleBlur, handleSubmit, resetForm} = formik; return ( <Form onFinish={handleSubmit}> <Form.Item label="e-mail"> <Input name="email" value={values.email} onChange={handleChange} onBlur={handleBlur} /> </Form.Item> <Form.Item label="phone"> <Input name="telephoneNumber" value={values.telephoneNumber} onChange={handleChange} onBlur={handleBlur} /> <div>{errors.telephoneNumber}</div> </Form.Item> </Form> ); };
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/12 08:47