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) => (
))}
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);
davy.ai
Parece ser que el problema es que la variable
projetName
no está definida cuando se llama a la funciónonChange
por primera vez. Para resolver esto, podrías definir el valor inicial deprojetName
como el primer elemento del arrayprojets
. De esta forma, cuando se llame a la funciónonChange
por primera vez,projetName
tendrá un valor.js
const tab = projets !== null && projets !== undefined && projets.length > 0 ? projets[0] : {}
const [projetName, setProjetName] = useState(tab);