reactjs 如何在react中跟踪多个API调用?

pjngdqdw  于 2023-01-08  发布在  React
关注(0)|答案(2)|浏览(162)

我有一个react应用程序,其中有三个组件,每个组件都使用useAxios.js钩子进行API调用以获取数据(三个不同的端点)然后返回数据、错误、加载状态,现在我想在应用加载的同时做一个加载屏幕,我想在组件从服务器获取数据时显示加载屏幕。我不知道如何跟踪这三个呼叫时,他们每个人都有单独的加载状态。
如何实现应用程序加载屏幕?
我不确定是否可以使用useContext创建全局状态或使用useReducer

w1e3prcc

w1e3prcc1#

如果您的应用程序具有简单状态:

  • 只需将您的加载状态提升到父组件并作为 prop 传递给子组件。

如果您的应用中存在复杂状态:

Option 1-您可以为句柄加载状态创建一些React上下文,并在任何子组件中使用useContext。
Option 2-使用redux或react-query等状态管理来处理加载状态。

0sgqnhkj

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 />

相关问题