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

161
Visualizações
Cómo manipular la propiedad del objeto en un componente reutilizable en React

Estoy usando el campo de entrada de MUI para muchas secciones de entrada de mi cuestionario y quiero guardarlo en mi variable de estado que es un objeto que contiene todos los valores de mi formulario. ¿Cómo puedo manipular mi objeto formData en un componente MUI reutilizable?

Actualmente estoy pasando formData como accesorio para el componente, pero no estoy seguro de cómo usar setFormData dentro del componente, ya que será una propiedad diferente cada vez que lo use.

Estaba pensando que cada pregunta es una propiedad del objeto de estado formData, por lo que se verá como

 formData{question1: 'foo', question2: 'bar'}

Así es como se ve el formulario en este momento (no me importa cambiar la estructura si tiene sentido hacerlo

Eche un vistazo a InputField en el formulario (también adjunté el código del componente)

 <QuestionLabel>Do you have a "Nickname":</QuestionLabel> <InputField value={props.formData.nickname}/> <QuestionLabel>Preferred Language:</QuestionLabel> <InputField value={props.formData.language}/> <QuestionLabel>Occupation:</QuestionLabel> <InputField value={props.formData.occupation}/>

Así es como se ve el componente (soy consciente de que tendré que cambiar esto)

 export default function InputField(props){ return( <TextField fullWidth value={props.value} variant='standard' /> ) }

Descargo de responsabilidad La primera publicación lo siento si el formato no es perfecto o si adjunté los fragmentos de código de una manera inconveniente, por favor dame algunos consejos si ese es el caso

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Dado que no hay vinculación bidireccional en reaccionar, la forma normal de procesar la entrada del formulario con componentes controlados es extraer el texto del elemento dom específico cada vez que cambia. Hacemos esto usando event.target.value para extraer los datos, pero ¿cómo los agregamos correctamente a su estado en un componente reutilizable?

Para eso, nos gustaría agregar una etiqueta de nombre al campo de entrada, que luego usaríamos al agregar el valor a nuestro estado. Como dijiste correctamente, formData.someName = 'some text' Actualizamos nuestro estado en una función changeHandler que actualiza nuestro estado cada vez que cambia la entrada.

Por ejemplo, supongamos que estamos pasando setFormData, formData y un nombre de campo a los accesorios:

 export default function InputField(props){ const {setFormData, formData, fieldName} = props //destructure the props const changeHandler = (event) => { // updates the formData state of formData.name to equal event.target.value setFormData({...formData, [event.target.name]: event.target.value}) } return( <TextField fullWidth name={fieldName} value={formdata.fieldName} onChange={changeHandler} variant='standard' /> ) }

El uso del componente anterior se vería así:

 <InputField setFormData={setFormData} formData={formData} fieldName="question1">
about 4 years ago · Juan Pablo Isaza Relatório

0

Pude hacerlo funcionar pasando la propiedad al componente que necesitaba ser cambiado; aquí está mi función handleChange en el componente de campo de texto:

 const handleChange = (event) => { var formData = {...props.formData} formData[props.property] = event.target.formData props.onChange(formData) }
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