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

115
Vistas
el campo de entrada no permite editar

Hola chicos, estoy tratando de editar el campo de entrada a continuación y no puedo. Obtengo algunos datos de un servidor y pongo estos datos en el value de la entrada. La idea es que hagamos clic en el ícono para permitir que el campo sea editable pero aún no se puede editar.

Esta es la input con accesorios personalizados:

 <input {...field} // required={props.required} disabled={props.disabled} value={props.value} type={props.type} autoComplete={props.autoComplete} pattern={props.pattern} className={`mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm rounded-md ${ error ? 'border-red-500' : 'border-gray-500' } ${ props.disabled ? 'disabled:shadow-none disabled:bg-slate-50 disabled:text-slate-500 disabled:border-slate-200' : 'border-gray-500' } `} />

Y aquí es donde realmente lo estoy usando. Entonces, una vez que hago clic en el ícono, su valor se vuelve realidad, pero no puedo editar dentro del valor que ya regresa del servidor.

 const [agent, setAgent] = useState<EstateAgentResponse | null>(null) const [enableField, setEnableField] = useState<boolean>(false) useEffect(() => { const fetchData = async () => { try { const { id } = params const agentUsers = await getEstaAgentUsers(parseInt(id!, 10)) const agent = await getEstateAgentById(parseInt(id!, 10)) setAgentUsers(agentUsers) setAgent(agent) } catch (error) { // ToDo: // We should handle the error message toast.error(`${error}`) } } fetchData() }, []) const handleInputField = () => { setEnableField(!enableField) } <PencilAltIcon className="block h-4 w-4" aria-hidden="true" onClick={handleInputField} /> <InputField name="businessName" label="Business name" disabled={!enableField} value={agent?.businessName} type="text" rules={{ required: 'This is required', }} />
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe crear el estado en lugar de pasar directamente el agent?.businessName en InputField como puede ver el código a continuación, espero que esto sea útil y también funcione. Gracias

 const [agent, setAgent] = useState<EstateAgentResponse | null>(null) const [enableField, setEnableField] = useState<boolean>(false); const [businessName, setBusinessName] = useState(''); useEffect(() => { const fetchData = async () => { try { const { id } = params const agentUsers = await getEstaAgentUsers(parseInt(id!, 10)) const agent = await getEstateAgentById(parseInt(id!, 10)); setBusinessName(agent?.businessName); setAgentUsers(agentUsers) setAgent(agent) } catch (error) { // ToDo: // We should handle the error message toast.error(`${error}`) } } fetchData() }, []) const handleInputField = () => { setEnableField(!enableField) } <PencilAltIcon className="block h-4 w-4" aria-hidden="true" onClick={handleInputField} /> <InputField name="businessName" label="Business name" disabled={!enableField} value={businessName} onChange={e => setBusinessName(e.target.name)} type="text" rules={{ required: 'This is required', }} />

En el componente de input , debe agregar onChange prop como puede ver el código a continuación

 <input {...field} // required={props.required} disabled={props.disabled} value={props.value} onChange={props.onChange} type={props.type} autoComplete={props.autoComplete} pattern={props.pattern} className={`mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm rounded-md ${ error ? 'border-red-500' : 'border-gray-500' } ${ props.disabled ? 'disabled:shadow-none disabled:bg-slate-50 disabled:text-slate-500 disabled:border-slate-200' : 'border-gray-500' } `} />
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