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

162
Vistas
Crear entrada dinámica y almacenar valores en objeto con nombre dinámico

Lo que trato de hacer es generar una input dinámica y recopilar todos los valores en un object con nombre dinámico, por lo que definí un object vacío en el estado:

 constructor() { super(); this.state = { setting_value: {}, // our object setting_append: 0, // define how input will be append }; }

Luego agrego la primera input como entrada predeterminada:

 componentDidMount() { this.handleAppend(); // run this on load }

En esta función, agrego una input , luego creo un item y lo agrego al objeto actual:

 handleAppend = () => { this.setState({ setting_append: this.state.setting_append + 1 }); let name = ''; let obj = this.state.setting_value; // current object for(let i = 0; i < this.state.setting_append; i++){ name = 'input_' + i; obj[name] = null; } this.setState({ setting_value: obj }) }

Y renderizar así:

 render() { const InputList = []; for (let i = 0; i < this.state.setting_append; i++) { InputList.push(i); } ... return ( {InputList && InputList.map(function (El, Index) { return ( <Col key={Index} md="6"> <Label>input {Index}</Label> <Input onChange={(e) => {this.handleValues(e, Index)}}/> </Col> ) })} ) <Button onClick={this.handleAppend}>+</Button> // append more input

Y esta es nuestra función de cambio:

 handleValues = (e, row) => { let value = e.target.value; let input_name = 'input_' + row; if(value){ const new_obj = {...this.state.setting_value, ...{ [input_name]: value}} this.setState({ setting_value: new_obj }); console.log(new_obj); } }

¡Problema!

Bien, después de cargar la página, obtuve una entrada, luego escribo un texto y la salida es (registro) :

 {input_0: 'xxxx'}

Luego hago clic en el botón para agregar otra entrada, luego escribo algo de texto:

 {input_0: null, input_1: '12'}

hace que la entrada anterior sea null pero necesito esta salida:

 {input_0: 'xxxx', input_1: '12'}

Luego, si escribo algún valor nuevo en la primera entrada, la salida es:

 {input_0: 'sdf'}

Pero debería ser:

 {input_0: 'sdf', input_1: '12'}

¿Alguna idea de lo que he hecho mal?

about 4 years ago · Juan Pablo Isaza
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