Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

90
Visualizações
Reaccionar: 3 entradas iguales pero solo una cambia de estado

Tengo un componente de entrada de archivo personalizado, que creé para mostrar la imagen precargada cuando la persona carga su archivo.

Pero el problema es que estoy usando este componente tres veces, e independientemente de la entrada que elija cargar, solo la primera entrada se ve afectada y se vuelve a renderizar. ¿Alguien se enfrentó a esto? ¿Debo usar nombres personalizados para las variables de useState()?

La entrada personalizada:

 const ImageInput = ({ name, register, registerName }: ImageInputProps) => { const [hasFileUploaded, setHasFileUploaded] = useState(false); const [currentFile, setCurrentFile] = useState(null); const handleImageChange = (e : React.FormEvent<HTMLInputElement>) => { setHasFileUploaded(true); } return ( <div className="input_box"> <input type="file" id="file" className="ImageInput" {...register(registerName)} onChange={(e) => handleImageChange(e)} /> <label htmlFor="file" > { hasFileUploaded ? ( <> <FontAwesomeIcon icon={faFighterJet} /> <p className="input_file_p">{name}</p> </> ) : ( <> <FontAwesomeIcon icon={faCamera} /> <p className="input_file_p">{name}</p> </> ) } </label> </div> ) };

Cómo lo estoy usando:

 <div className="fc_center_images"> <div> <ImageInput name="Frente CREA" register={register} registerName="cadastro-frente-crea" /> </div> <div> <ImageInput name="Verso CREA" register={register} registerName="cadastro-verso-crea" /> </div> <div> <ImageInput name="Selfie c/identidade" register={register} registerName="cadastro-selfie" /> </div> </div>
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

cada elemento debe tener una id única, por lo que sugiero pasar la id también

 const ImageInput = ({ name, register, registerName, id }: ImageInputProps) => { const [hasFileUploaded, setHasFileUploaded] = useState(false); const [currentFile, setCurrentFile] = useState(null); const handleImageChange = (e : React.FormEvent<HTMLInputElement>) => { setHasFileUploaded(true); } return ( <div className="input_box"> <input type="file" id={id} className="ImageInput" {...register(registerName)} onChange={(e) => handleImageChange(e)} /> <label htmlFor={id} > { hasFileUploaded ? ( <> <FontAwesomeIcon icon={faFighterJet} /> <p className="input_file_p">{name}</p> </> ) : ( <> <FontAwesomeIcon icon={faCamera} /> <p className="input_file_p">{name}</p> </> ) } </label> </div> ) };

puedes llamarlo así:

 <div className="fc_center_images"> <div> <ImageInput name="Frente CREA" register={register} registerName="cadastro-frente-crea" id="id1"/> </div> <div> <ImageInput name="Verso CREA" register={register} registerName="cadastro-verso-crea" id="id2" /> </div> <div> <ImageInput name="Selfie c/identidade" register={register} registerName="cadastro-selfie" id="id3"/> </div> </div>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda