<div id="root"></div>
body {
  height: 100vh;
  margin: 0;
  line-height: 1.5;
  display: grid;
  place-items: center;
}

h1 {
  font-size: 20px;
  line-height: 1.5;
  margin: 0 0 10px 0;
}

p {
  margin: 0;
}
const { useState } = React

const Text = () => {
  const [name, setName] = useState('Taro');
  const [age, setAge] = useState('20')

  const handleChangeName = e => setName(e.target.value);
  const handleChangeAge = e => setAge(e.target.value);
    return(
      <>
        <h1>My Name is {name}. I'm {age} years old.</h1>
        <input type="text" value={name} placeholder="Input your name" onChane = {handleChangeName}/>
        <input type="text" value={age} placeholder="Input your age" onChange={handleChangeAge}/>
      </>
    )
}

const RadioButton = () => {
  const [value, setValue] = useState('rock');
  const handleChange = e => setValue(e.target.value);

  return(
    <>
      <h1>Your Favorite Genre</h1>
      <p>I like {value}.</p>

      <label htmlFor="rock">
        Rock
        <input
          id="rock"
          type="radio"
          value="rock"
          onChange={handleChange}
          checked={value === 'rock'}
          />
      </label>

      <label htmlFor="jazz">
        Jazz
        <input
          id="jazz"
          type="radio"
          value="jazz"
          onChange={handleChange}
          checked={value === 'jazz'}
          />
      </label>

      <label htmlFor="classic">
        Classic
        <input
          id="classic"
          type="radio"
          value="classic"
          onChange={handleChange}
          checked={value === 'classic'}
          />
      </label>
    </>
  )
}

const CheckBox = () => {
  
  const [value, setValue] = useState(['javascript']);
  const handleChange = e => {
    if (value.includes(e.target.value)) {
      setValue(value.filter(item => item !== e.target.value));
    } else {
      setValue([...value, e.target.value]);
    }
  }

  return(
    <>
      <h1>Your Favaorite Language</h1>
      <p>I like {value.join(', ')}</p>

      <label htmlFor="php">
        PHP
        <input 
          id="php"
          type="checkbox"
          value="php"
          onChange={handleChange}
          checked={value.includes('php')}
        />
      </label>

      <label htmlFor="golang">
        GO
        <input 
          id="golang"
          type="checkbox"
          value="golang"
          onChange={handleChange}
          checked={value.includes('golang')}
        />
      </label>

      <label htmlFor="javascript">
        JavaScript
        <input 
          id="javascript"
          type="checkbox"
          value="javascript"
          onChange={handleChange}
          checked={value.includes('javascript')}
        />
      </label>

    </>
  )
}

const SelectBox = () => {
  const [value, setValue] = useState('beer');
  const handleChange = e => setValue(e.target.value);

  return(
    <>
      <h1>Your Favaorite Liquor</h1>
      <p>I like {value}</p>
      <select value={value} onChange={handleChange}>
        <option value="beer">Beer</option>
        <option value="wine">Wine</option>
        <option value="whisky">Whisky</option>
      </select>
    </>
  )
}




const App = () => {
  return(
    <>
      <Text />
      <hr />
      <RadioButton />
      <hr />
      <CheckBox />
      <hr />
      <SelectBox />
    </>
  )
 
}

ReactDOM.render(<App />,
document.getElementById("root"))
View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/react/16.13.0/umd/react.production.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.0/umd/react-dom.production.min.js