Advice Generator App

Solution retrospective
I'm proud that I can finally implement how to use useState and useEffect using react in this challenge and it works.
What challenges did you encounter, and how did you overcome them?It's quite hard to add customized styles to tailwindcss v4 here, but I manage to do it and it's actually quite short than v3.
What specific areas of your project would you like help with?Perhaps with the styles, it's actually kind of difficult without the design numbers from Figma, so I just went round and round giving the styles and check it with the design but I'm completely blind with the numbers of the designs. Anyone can help?
Please log in to post a comment
Log in with GitHubCommunity feedback
- @khatri2002
Hi @Abaljerind!
The developed solution looks good!
I would just suggest you to use a
try-catch
block in thehandleGetQuote
function, where the API is being called.async function handleGetQuote() { try { const res = await fetch("https://api.adviceslip.com/advice"); // Check if the response is successful if (!res.ok) { throw new Error(`HTTP error! Status: ${res.status}`); } const data = await res.json(); setQuote(data.slip.advice); setQuoteId(data.slip.id); } catch (error) { console.error("An error occurred while fetching the quote:", error); //Can be removed in production environment alert("Sorry, we couldn't fetch a quote at this time. Please try again later."); } }
Why is error handling important in API calls?
-
Uncertain Server Responses: APIs can behave unpredictably. The server might be down, rate limits could be exceeded, or there could be unexpected errors on the server side. Handling errors ensures your app can gracefully deal with such situations.
-
User Experience: Without error handling, your app might crash or display incomplete information, leaving users confused. A clear error message (like "Sorry, we couldn't fetch a quote") keeps the user informed.
-
Network Issues: Network failures or connectivity issues can occur, especially in mobile environments. The
catch
block can handle these gracefully. -
Standard Practices: It's a best practice to handle errors where the API call is made. Centralizing error handling here ensures you're addressing failures close to their origin and maintaining cleaner and more maintainable code.
-
Future-proofing: If the API changes its response structure, adds authentication, or modifies its behavior, proper error handling can prevent breaking your application. For instance, checking
res.ok
ensures that you're not blindly processing an error response as if it were successful.
By wrapping your API calls in a
try-catch
block, you make your application more robust, user-friendly, and aligned with best development practices.The rest of the solution looks amazing! Keep up the great work! 🚀
Marked as helpful -
Join our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord