Default Value

Loading "Default Value"
πŸ¦‰ You may have noticed in the previous step we used a value prop. This is how you set the value in an HTML document. React however is a little special and supports what's called "controlled inputs" meaning you can programmatically control the value of the input.
For this reason, when you set the value prop on an input like this, it means that React will expect you keep that value up-to-date and will not allow the user to change the value to anything other than what you have specified in the value prop. Effectively, this means that if we set the value on one of our fields, the user can't change it unless we do a little extra work. This is a very useful feature we'll discuss more later on, but it has implications for our form now, so let's address this.
The thing is, we want to default several of these fields to a value, but we want the user to be able to change them. With the exception of the hidden input, we can't do that with the value prop. So we need to use a different prop.
In React, you use the defaultValue prop to set the default value of an input and the defaultChecked prop to set the default value of a checkbox or radio. The defaultValue should be a string (or it will be coerced to a string) that matches the format of the input.
<input type="text" defaultValue="Hello World" />
// these give the same result:
<input type="number" defaultValue="42" />
<input type="number" defaultValue={42} />
If it's a date, you need to use a string, but it needs to be in the format YYYY-MM-DD (because that's the format of the value when the user selects a date). You can use the toISOString method on a Date object which gives a string with the format YYYY-MM-DDTHH:mm:ss.sssZ, so we can use slice to get the first 10 characters:
<input type="date" defaultValue={new Date().toISOString().slice(0, 10)} />
This applies to select as well. Set it the the value of the option you want to have selected, and that one will be selected by default:
<select defaultValue="pineapple">
	<option value="apple">Apple</option>
	<option value="banana">Banana</option>
	<option value="pineapple">Pineapple</option>
</select>
Checkboxes and Radios are special cases. For these, you set the defaultChecked prop:
<input type="checkbox" defaultChecked />
// and for the radio, just set defaultChecked on the one you want selected:
<input type="radio" name="fruit" value="apple" defaultChecked />
<input type="radio" name="fruit" value="banana" />
<input type="radio" name="fruit" value="pineapple" />
πŸ‘¨β€πŸ’Ό So with that, please set some defaults on these form fields:
  • Account Type: "Student"
  • Age: 18
  • Favorite Color: #002E5D
  • Visibility: Public
  • Waiver Signed: Checked
  • Start Date: Today's date
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
    1 Β· 9 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 Β· a day 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 Β· 3 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 Β· 5 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 Β· 6 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 Β· 8 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 Β· 9 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 Β· 5 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 Β· 13 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 Β· 18 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 Β· a month 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