我有一个react应用程序,其中有三个组件,每个组件都使用useAxios.js钩子进行API调用以获取数据(三个不同的端点)然后返回数据、错误、加载状态,现在我想在应用加载的同时做一个加载屏幕,我想在组件从服务器获取数据时显示加载屏幕。我不知道如何跟踪这三个呼叫时,他们每个人都有单独的加载状态。如何实现应用程序加载屏幕?我不确定是否可以使用useContext创建全局状态或使用useReducer
w1e3prcc1#
如果您的应用程序具有简单状态:
如果您的应用中存在复杂状态:
Option 1-您可以为句柄加载状态创建一些React上下文,并在任何子组件中使用useContext。Option 2-使用redux或react-query等状态管理来处理加载状态。
0sgqnhkj2#
const useFetch = (url) => { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios.get(url) .then((res) => { setData(res.data) setLoading(false) }).catch(err => { setError(err) setLoading(false) }) }, [url]); return { data, loading, error } }; export default useFetch;
您可以像这样在组件中使用这个定制的钩子来进行动态使用
const { data, loading, errors } = useFetch('localhost:3000/api/user')
通过这种方式,你可以很容易地跟踪所有的请求,并可以实现你的加载器相应
loading ? <Loader /> : <Random />
2条答案
按热度按时间w1e3prcc1#
如果您的应用程序具有简单状态:
如果您的应用中存在复杂状态:
Option 1-您可以为句柄加载状态创建一些React上下文,并在任何子组件中使用useContext。
Option 2-使用redux或react-query等状态管理来处理加载状态。
0sgqnhkj2#
您可以像这样在组件中使用这个定制的钩子来进行动态使用
通过这种方式,你可以很容易地跟踪所有的请求,并可以实现你的加载器相应