我想知道在哪种情况下哪种方法更好:
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存储。
例如:
2条答案
按热度按时间krcsximq1#
不完全是堆栈溢出问题,因为这是个观点
但是,因为现在还没有到2022年,我会100%得到RTKQ,https://redux-toolkit.js.org/rtk-query/overview
好处(小列表):
你不必自己写所有的逻辑...
vddsk6oq2#
绝对是一个观点类型的问题,所以对我的回答持保留态度。但是你应该看看React Query。你仍然可以为你的Redux商店使用Reducer,只是使用React Query而不是你的额外Reducer。
https://react-query-v3.tanstack.com/