Tengo dos archivos llamados actions.js y vip.js Declaré una función fetchVip en el archivo de action y la importé en un archivo vip que completará el elemento de texto cuando se cargue la pantalla. Quiero acceder a la respuesta de fetchVip en el archivo vip , pero no estoy definido como este LOG useeffect undefined . Mientras que responde funciona como se esperaba en el archivo de acción. Mi código está a continuación.
Archivo Vip
import {fetchVip} from '../../Store/action'; const Vip = props => { useEffect(() => { console.log('useeffect', fetchVip()); }, [fetchVip()]);archivo de acción
export const fetchVip = () => { axios .post(`${baseUrl}/get-vips`) .then(function (response) { return response.data; }) .catch(function (error) { console.log('error', error); return {type: 'ERROR', payload: error}; }); };fetchVip no devuelve nada, por lo que primero debe agregar una declaración de devolución aquí:
export const fetchVip = () => { return axios .post(`${baseUrl}/get-vips`)o quite las llaves, luego volverá también.
export const fetchVip = () => axios .post(`${baseUrl}/get-vips`) ... return {type: 'ERROR', payload: error}; }) Ahora devolverá una promesa. Eso significa que el resultado no estará allí de inmediato, sino en algún momento posterior. Por lo tanto, si desea utilizarlo en el useEffect , debe esperar a que llegue el resultado.
podría hacer esto con la sintaxis de ES6:
useEffect(() => { const getVip = async () => { const vip = await fetchUsers(); console.log(vip) //now you can do something with it }; getVip(); }, [fetchVip]); o la sintaxis promise-then :
useEffect(() => { fetchVip().then(result => { console.log(result); //do something with the result }) }, [fetchVip]);Esto está mal por cierto. quitar el (). Desea verificar la función aquí, no el resultado de la función.
}, [fetchVip()]);