Cómo guardar valores de MultiSelect en el formulario de reacción de MultiStep usando ganchos

Adnan Arif

He desarrollado una forma de varios pasos en react. Cuando creo la opción de selección múltiple en el formulario, el valor no se guarda en los estados. Estoy usando ganchos. Cuando selecciono opciones y hago clic en la página siguiente, los valores no se guardan en la matriz. Aquí está mi código:

import React, { useState }   from 'react';   
import Select, { components } from 'react-select';
const UserDetails = ({ setForm, formData, navigation }) => {   
    const techCompanies = [
        { label: "Apple", value: 1 },
        { label: "Facebook", value: 2 },
        { label: "Netflix", value: 3 },
        { label: "Tesla", value: 4 },
        { label: "Amazon", value: 5 },
        { label: "Alphabet", value: 6 },
      ];
      const [selectedOption,setselectedOption] = useState([]);
      const [newarray,setarray]=useState([]);

     const  handleChange = (selectedOption) => {
        setselectedOption(newarray.concat(selectedOption))
        console.log(setselectedOption)
    }
      console.log(selectedOption)

    const { next } = navigation;  
    return( 
        <div className="row justify-content-center mt-5">
            <form>  
             <h1 className="text-center prox_bold">Enter User Details</h1>
                 <Select 
                  options={ techCompanies }
                  isMulti
                  onChange={handleChange}
                  value={selectedOption}/>   
                  <div className="row justify-content-center mt-5">
                   <button className="btn green_btn w250 font22" onClick={next}>
                       Next
                   </button>    
               </div>       
           </form>
         </div>
    );
}
export default UserDetails;
MrCode

El estado es local al UserDetailscomponente. Cualquiera que sea la lógica en la que tenga next()parece estar renderizada de forma selectiva UserDetailssegún el paso que haya alcanzado el usuario.

Esto es un problema porque cuando el usuario pasa al siguiente paso, su UserDetailsse desmonta y se destruye y, por lo tanto, pierde su estado.

La solución es tener la selectedOptionmatriz como accesorio activado UserDetails, moverlo handleChangehacia arriba al componente principal y tenerlo como accesorio activado UserDetailstambién. Almacenar selectedOptionen el estado del componente principal que no se desmonta al cambiar de paso.

<UserDetails ... selectedOption={parentStateSelectedOption} handleChange={handleChange} />

En el <Select />:

<Select ... value={parentStateSelectedOption} onChange={handleChange}
                                                        ^ parent handleChange not local

En su componente principal, coloque el handleChangeevento para que se almacene en el estado principal.

Ahora, cuando el usuario pasa a la siguiente pantalla, ha almacenado de forma segura las opciones seleccionadas en el estado principal.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cómo guardar valores de MultiSelect en el formulario de reacción de MultiStep usando ganchos

¿Cómo simulamos los valores de estado para el componente de reacción usando ganchos de reacción en Jest?

Cómo actualizar el estado en sí mismo usando ganchos de reacción

¿Cómo podemos mantener / conservar el valor desplegable seleccionado después de enviar y restablecer el área de texto en el formulario de ganchos de reacción?

¿Cómo obtener el valor usando el componente de calificación de reacción en mi formulario?

¿Cómo insertar un nuevo valor en la matriz actual usando los ganchos de reacción?

¿El formulario de reacción está poniendo valores de campo de texto en cadenas de consulta?

¿El formulario de reacción está poniendo valores de campo de texto en cadenas de consulta?

¿Cómo volver a animar la animación de resorte de reacción usando ganchos al hacer clic en el botón?

¿Cómo guardar los estados de reacción en el botón de retroceso del navegador?

Cómo almacenar múltiples datos de formulario de reacción en el estado

Usando dos ganchos de reacción useeffect

Cómo agregar valores usando arrastrar y soltar en el campo de formulario de entrada

Cómo guardar el formulario de valor de casilla de verificación en MySQL en un campo

Cómo hacer una función que guardará los cambios en el formulario de selección y los aplicará en la tabla usando AngularJs

¿Cómo pasar el objeto por identificación después de guardar desde el formulario usando redirección?

¿Cómo pasar el objeto por identificación después de guardar desde el formulario usando redirección?

¿Cómo actualizar el estado de la matriz de ganchos de reacción?

¿Cómo actualizar el estado de la matriz de ganchos de reacción?

El formulario de reacción no se muestra en el navegador

¿Cómo desencadenar una nueva representación con `setValue` usando el formulario de gancho de reacción?

¿Cómo guardar el archivo docx en función de los valores elegidos de tkinter?

Ganchos de reacción en listas dinámicas: más ganchos que el renderizado anterior

¿Cómo guardar datos de entrada de control de formulario personalizados en el elemento web?

Cómo guardar la entrada de texto de clave externa en el formulario modelo de Django

Cómo refactorizar el funcionamiento correcto de los ganchos anidados de reacción

¿Cómo restablecer el estado de los ganchos de reacción?

¿Cómo determinan los ganchos de reacción el componente para el que son?

Cómo guardar múltiples campos de formulario en la base de datos usando laravel 5.4

TOP Lista

CalienteEtiquetas

Archivo