reactjs Redux中间件在异步工作方面是否优于执行http请求的自定义钩子

gj3fmq9x  于 2022-12-26  发布在  React
关注(0)|答案(2)|浏览(106)

我想知道在哪种情况下哪种方法更好:
1.对http请求进行自定义钩子响应,在这里我们放置加载、错误和数据的状态,然后在功能组件内部我们只需要使用钩子获取数据,然后将其呈现到用户界面和/或保存到redux。
例如:'const useFetch =(查询)=〉{const [状态,设置状态]=使用状态('空闲'); const [数据,设置数据]=使用状态([]);

useEffect(() => {
    if (!query) return;

    const fetchData = async () => {
        setStatus('fetching');
        const response = await fetch(
            `https://hn.algolia.com/api/v1/search?query=${query}`
        );
        const data = await response.json();
        setData(data.hits);
        setStatus('fetched');
    };

    fetchData();
}, [query]);

return { status, data };

};`
1.或者我们应该使用redux或redux工具包的中间件来完成http或任何异步工作,然后在中间件中分派一个动作来更新redux存储。
例如:

krcsximq

krcsximq1#

不完全是堆栈溢出问题,因为这是个观点
但是,因为现在还没有到2022年,我会100%得到RTKQ,https://redux-toolkit.js.org/rtk-query/overview
好处(小列表):

  • 缓存
  • 额外减速器
  • 转换响应
  • 从结果中选择
  • 自动失效、重取、轮询
  • 您仍然可以使用axios或gql

你不必自己写所有的逻辑...

vddsk6oq

vddsk6oq2#

绝对是一个观点类型的问题,所以对我的回答持保留态度。但是你应该看看React Query。你仍然可以为你的Redux商店使用Reducer,只是使用React Query而不是你的额外Reducer。
https://react-query-v3.tanstack.com/

相关问题