#reactjs #typescript #types #typescript-typings
#реагирует на #машинописный текст #типы #машинопись-наброски
Вопрос:
после отправки формы я хочу очистить ввод с помощью useRef. В функции handleFormSubmit после отправки значения, которое я присваиваю emailRef.current.value
пустой строке, возникает ошибка Object is possibly 'null'
. Для ясности я не могу добавить необязательный оператор, потому что левая часть выражения присваивания не может быть необязательной. Пожалуйста, помогите 😉
const emailRef = useReflt;HTMLInputElement | nullgt;(null); const handleFormSubmit = (e: React.FormEventlt;HTMLFormElementgt;) =gt; { e.preventDefault(); setEmail(emailRef.current?.value); return onValidated({ EMAIL: email || '' }), alert('Zapisano!'), (emailRef.current.value = ''); }; lt;input ref={emailRef} type="email" placeholder="e-mail" className="font-medium max-w-full px-5 py-5 mr-2 rounded-md border-2 border-emerald-dark transition-all" /gt;
Ответ №1:
Добавьте оператор if,
const emailRef = useReflt;HTMLInputElement | nullgt;(null); const handleFormSubmit = (e: React.FormEventlt;HTMLFormElementgt;) =gt; { e.preventDefault(); setEmail(emailRef.current?.value); if (emailRef.current) { emailRef.current.value = '' } return onValidated({ EMAIL: email || '' }), alert('Zapisano!'); }; lt;input ref={emailRef} type="email" placeholder="e-mail" className="font-medium max-w-full px-5 py-5 mr-2 rounded-md border-2 border-emerald-dark transition-all" /gt;
Ответ №2:
Вам либо нужно написать код, который проверяет наличие null и, таким образом, доказывает машинописному тексту, что назначение безопасно:
if (emailRef.current) { emailRef.current.value = ''; }
Или, если вы точно знаете, что он не может быть нулевым, вы можете использовать ненулевое утверждение. Имейте в виду, что если вы сделаете это, typescript не проверит вашу работу, поэтому, если вы используете его, когда он на самом деле может быть равен нулю, вы получите ошибку во время выполнения.
emailRef.current!.value = '';