es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función llamada demasiado rápido en el componente “selector” en el evento “onChange”.

Necesito recuperar datos de mi API cuando cambio el valor en mi componente selector. Entonces lo que hice fue crear una función para obtener mis datos y la llamo en mi selector ‘onChange’. Ahora mi problema es que en mi función fetch uso una variable que establezco justo antes de llamarla. Y cuando cambio el valor del selector por primera vez, mi variable useState no está configurada (o no es detectada por mi aplicación) y cuando cambio el valor por segunda vez, finalmente funciona. ¿Cómo puedo resolver eso?

Componente Selector:

}
MenuProps={MenuProps}
>
{projets.map((projet) => (
{projet.nom}
))}

Función onChange:

const handleSelectProjectChange = (event) => {
setProjetName(event.target.value);
getClientByProject();
};

Función Fetch:

function getClientByProject() {
axios
.get(API_URL_CLIENT_BY_ACTIVITE + projetName.id)
.then((response) => {
if(response.status === 200) {
setClient(response.data);
console.log(‘Response: ‘, response.data);

        }
    })
    .catch((error) => {
        console.log(error);
    })

}

useState:

const tab = projets !== null && projets !== undefined && projets.length > 0 ? projets[0] : {}
const [projetName, setProjetName] = useState(tab);

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece ser que el problema es que la variable projetName no está definida cuando se llama a la función onChange por primera vez. Para resolver esto, podrías definir el valor inicial de projetName como el primer elemento del array projets. De esta forma, cuando se llame a la función onChange por primera vez, projetName tendrá un valor.

    js
    const tab = projets !== null && projets !== undefined && projets.length > 0 ? projets[0] : {}
    const [projetName, setProjetName] = useState(tab);

Comments are closed.