Custom Component

Loading "Custom Component"
πŸ‘¨β€πŸ’Ό We want to reduce duplication here by making a custom <Box /> component that renders a div, accepts all the props and merges the given style and className props with the shared values.
I should be able to use it like so:
<Box className="box--small" style={{ backgroundColor: 'lightblue' }}>
	small lightblue box
</Box>
The box className and fontStyle: 'italic' style should be applied automatically by the <Box /> component which should then merge that default with the values that come from props.
How you go about implementing it is part of the fun (aka "learning" πŸ˜‰). You may come up with something completely different from how I do it and that's great for your learning. When you're done, these two ultimately render exactly the same thing:
// before:
<div
  className="box box--small"
  style={{fontStyle: 'italic', backgroundColor: 'lightblue'}}
>
  small lightblue box
</div>

// after:
<Box className="box--small" style={{backgroundColor: 'lightblue'}}>
  small lightblue box
</Box>
And I should be able to switch the div for a Box for the medium and large boxes as well.
πŸ’° Here's a quick tip for the TypeScript part of this. When you want to wrap an element to basically simulate that element + a little functionality (like in our case), you'll want to borrow the type definition for that element from React. Here's how you do that (for a span element rather than div):
function MySpan(props: React.ComponentProps<'span'>) {
	return <span {...props} />
}
And now you'll get type safety and autocomplete for all the HTML attributes accepted by a span element.
Login to get access to the exclusive discord channel.
  • General
    Not able to launch editor
    Lenssen:
    I'm stuck here and not able to launch the edior
    0 Β· 4 hours 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 Β· 15 hours 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 days ago
  • βš›οΈFundamentals
    Error on loading deployed version - React Fundamentals
    wargha πŸš€:
    On this link: https://www.epicreact.dev/get-started?module=react-fundamentals%7D if you click on ge...
    3 Β· 4 days 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 Β· 5 days 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 Β· 7 days 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 Β· 8 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 Β· 4 days 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 Β· 12 days 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...
    0 Β· 12 days 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 Β· 17 days 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 Β· 17 days 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
    4 Β· 25 days ago
  • βš›οΈFundamentals
    First Four Exercises are Free!
    Kent C. Dodds β—† πŸš€πŸ†πŸŒŒ:
    To make sure this shows up in the fundamentals thread. Isn't it exciting the first four exercises of...
    • ❀️3
    • πŸƒ1
    2 Β· a month 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
    40 Β· 2 days ago