[英]Loading state only when data is being fetched
我試圖在僅獲取數據時顯示加載程序,而不是着陸到頁面上以及獲取數據時首先顯示加載器...有什么想法嗎?
這是我目前正在做的
const handleSearchClick = async () => {
setItems([]);
setIsActive(true);
const { data: { items } } = await fetchData(
`${process.env.REACT_APP_URL}${page}`,
);
items.length && setIsActive(false);
setPage(1);
setItems(items);
};
<container>
<SearchBarContainer>
<SearchBar
onClickButton={handleSearchClick}
onValueChange={handleChange}
value={value}
pageNum={page}
/>
</SearchBarContainer>
{!isActive ? (/*Display data*/) :
(
<LoaderContainer>
<RingLoader size={100} />
</LoaderContainer>
)}
</container>
您需要在獲取數據之前和之后設置加載狀態。
const App = props => { const [loading, setLoading] = useState(false); const [items, setItems] = useState([]); const handleSearchClick = async () => { setLoading(true); try { const { data: { items: newItems } } = await fetchData( `${process.env.REACT_APP_URL}${page}`, ); setItems(newItems); } catch(e) { console.log('Error', e); } finally { setLoading(false); } }; return ( <container> <SearchBarContainer> <SearchBar onClickButton={handleSearchClick} onValueChange={handleChange} value={value} pageNum={page} /> </SearchBarContainer> {loading ? ( <LoaderContainer> <RingLoader size={100} /> </LoaderContainer> ) : ( <div>Your data</div> ); } </container> ); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.