Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

189
Vistas
¿La variable usestate muestra un valor indefinido?

Recibo un error indefinido en la variable de value que es un estado. al registrar el value en la consola, inicialmente toma el valor de props.value dentro de useEffect . Pero luego, en los renderizados simultáneos, se escribe undefined , así que supongo que la variable de value se vuelve indefinida después de eso. Pero este problema no existe cuando se elimina el código value.length . entonces el error indefinido no ocurre y props.value está dentro del área de texto. Pero necesito el código value.length para determinar algunas clases de CSS. Por lo tanto, supongo que antes de que la variable de valor sea establecida por props.value , value.length code runs. But then the state default is set as "" so que value.length` debería devolver 0 incluso si se ejecuta primero, ¿verdad? Entonces, no entiendo por qué el valor de mi variable de estado se vuelve indefinido en el medio.

 import React, { useState, useEffect } from "react"; const TextArea = (props) => { const [value, setValue] = useState(""); useEffect(() => { window.sessionStorage.setItem(props.name, value); }, [value, props]); useEffect(() => { setValue(props.value); }, [props.value]); return ( <div className="input-box input-box--3"> <textarea required name={props.name} type="text" rows={props.rows} value={value} onChange={(event) => setValue(event.target.value)} className={ console.log(value) // value.length === 0 // ? "input-box--field input-box--field--3" // : "input-box--field input-box--field--3 input-box--field--3--not-empty" } autoComplete={props.autoComplete} /> <span className={ value.length === 0 ? "input-box--placeholder" : "input-box--placeholder input-box--placeholder--not-empty" } > {props.placeholder} </span> </div> ); }; export default TextArea;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El valor depende de la propiedad de value , por lo que si pasa algo en esta propiedad, debería funcionar:

https://codesandbox.io/s/mystifying-cartwright-x6ldj0?file=/src/App.js

Sin embargo, puede hacerlo más a prueba de balas verificando si el accesorio pasado no está definido:

 setValue(props.value ? props.value : "");
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda