Optimistic UI

Loading "Optimistic UI"
πŸ§β€β™‚οΈ I've added a form and some API updates for us to be able to create new ships to add to the page. As usual, you can check my work if you're curious what has changed and if you'd like to implement this yourself for some extra practice, feel free to go back to the previous solution and add the form and API updates yourself.
πŸ‘¨β€πŸ’Ό Thanks Kellie! Ok, so right now, the user experience is not great with the amount of time it takes to create a ship and then display the newly created ship. It definitely would be nice to let the user see as much of their newly created ship as possible while we're in the process of saving it and loading it.
What we need is a mechanism for turning the user's submission into a Ship object which we can use to display.
πŸ§β€β™‚οΈ Actually, I already implemented this as well, it's called createOptimisticShip and accepts a FormData object. So you can use that. You'll notice the fetchedAt time is set to '...' because it's not technically been fetched yet. This is common for optimistic UI where there's some data you can't display until the server response actually comes through. But the rest of the data we get is what we want to display.
πŸ‘¨β€πŸ’Ό Oh awesome. Great so what you need to do is create an optimistic ship which we can pass to the ShipDetails component to display that while the real data is being retrieved.
You'll need to store this up in the App component and pass the optimisticShip and setOptimisticShip props down to the CreateForm and ShipDetails components.
Hop to it!
Login to get access to the exclusive discord channel.
  • 🎣Hooks
    πŸ”€Suspense
    Clarification on how to trigger a suspense
    seven πŸš€:
    Hello, in lesson about useTransition Kent said that "anytime you have a state update thats going to ...
    3 Β· 13 days ago
  • General
    Launch editor error: Could not open 'index.html' from:'playground' in the editor.
    Japhet πŸš€ πŸ†:
    I'm encountering an issue when trying to open a link from the file list. The error message I receive...
    • βœ…1
    15 Β· 2 months ago
  • πŸ”€Suspense
    Suspense img tip
    Jon Winsley πŸš€:
    The solution for Suspense Img/Img Component wasn't working for me, and it took a little bit to figur...
    • πŸ™Œ3
    5 Β· 2 months ago
  • General
    Launch editor error: spawn code ENOENT
    Andrew Elans 🌌 πŸš€:
    Clicking index.html gives this error in VS Code. Both from Chrome and Safari. Anyone?
    • βœ…2
    6 Β· 6 days ago
  • General
    Welcome to EpicReact.dev! Say Hello πŸ‘‹
    Kent C. Dodds β—† πŸš€πŸ†πŸŒŒ:
    Welcome to the first of many posts in the EpicReact.dev channel! Take a moment to introduce yourself...
    • πŸš€5
    46 Β· a month ago
  • General
    AI Assistant?
    John πŸš€:
    Kent has mentioned an AI assistant that he's using in VSCode. Is there any detail on what that is an...
    • βœ…2
    2 Β· a month ago
  • General
    Script to save playground folder
    larissapissurno πŸš€:
    Hi all, I personally like to take notes on the playground files, so in order to not lose this notes ...
    • βœ…1
    2 Β· a month ago
  • General
    Runninng Learning app on iPad?
    marcus_polonus πŸš€:
    Hi all, Did anyone managed to setup learning app on iPad? I tried to use codesandbox, but when I am...
    • βœ…1
    1 Β· 2 months ago
  • General
    βš›οΈFundamentals
    Error boundary good practice
    Lloren πŸš€:
    I have always wondered if the error boundary is there a limit of error boundary that you can impleme...
    • βœ…1
    1 Β· a month ago
  • General
    Received this error when running the setup script for React Fundamentals
    ChrisP πŸš€:
    Hey guys, I am completely blocked at the moment. When I clone and run the setup for react fundamenta...
    • βœ…1
    2 Β· a month ago
  • General
    Unexpected server error (workshop-app does not load onboarding step)
    Matias 🌌 πŸš€:
    Hey! πŸ‘‹ I installed the free workshop "Build React Hooks" last week with no issues. Yesterday, whe...
    • βœ…1
    3 Β· 2 months ago
  • General
    Eye opening moment in 05/06 (β€žsatisfiesβ€œ operator of typescript)
    Chrigi πŸš€:
    Up until today I was not aware that having the type annotation on a variable is actually a type-cast...
    • πŸ™Œ2
    • βœ…1
    2 Β· 2 months ago
  • General
    Failed to fetch dynamically imported module...
    FacuPerezM:
    I am getting this error out of nowhere, in the 'test' tab inside the Workshop app. ``` Failed to f...
    • βœ…1
    3 Β· 2 months ago
  • General
    Epicshop not saving the video resolution
    Toni πŸš€ 🌌:
    Playback speed and caption settings are saved, but the video resolution always defaults to auto. Is ...
    • βœ…1
    7 Β· 2 months ago
  • General
    Clicking an exercise file launch VIM instead of VS Code
    DBattou πŸš€:
    I started going through the workshops, everything is setup and working fine except for opening a fil...
    • βœ…1
    2 Β· 2 months ago