Búsqueda de sitios web

javascript - Esta condición siempre devolverá 'false' ya que los tipos 'MutableRefObject' y 'string' no tienen coincidencia. TS2367


Tengo un problema usando React y TS

Tengo el estado del correo electrónico y la contraseña en States

const emailRef = useRef<string | null>(null);
const passwordRef = useRef<string | null>(null);

Colocándolos así:

const onEmailChange = (value: any) => {
        emailRef.current = value;
    };

    const onPasswordChange = (value: any) => {
        passwordRef.current = value;
    };

Y trata de usarlos en la función onButtonEnter pero obtengo este problema:

const onButtonEnter = () => {
        if (!buttonDisabled) {
            setButtonDisabled(true);
            if (emailRef === '' && passwordRef === '') { - here I have an issue
                showAlert(errors.invalid);

¡¡¡Esta condición siempre devolverá 'false' ya que los tipos 'MutableRefObject' y 'string' no tienen superposición. TS2367

¿Qué puede ser?

Respuesta #1

La respuesta a tu problema está en el mensaje de error:

  • emailRef es un objeto de React - 'MutableRefObject<string | null>'
  • emailRef.current es tu cadena

emailRef nunca será '', emailRef.current, por otro lado, muy bien podría serlo.

Cambiar

if (emailRef === '' && passwordRef === '') {

en

if (emailRef.current === '' && passwordRef.current === '') {

Y quizás, lee un poco más sobre useRef en la documentación de React.

Artículos relacionados