A text box lets a user enter characters into a form. In React, a common approach is to keep its current value in component state and update that state when the user types. This is a controlled input; an uncontrolled input instead leaves its value under the browser’s control until React reads it. section 9.0
Add a description field
A multiline text box uses `<textarea>`. Give it a state-backed `value` and update that state through `onChange`: `const [data, setData] = useState({ title: "", description: "" });` `const onChange = (evt) => setData((old) => ({ ...old, [evt.target.name]: evt.target.value }));` `<textarea name="description" value={data.description} onChange={onChange} />` section 9.2.5
There is a small HTML-to-React difference to remember: plain HTML puts an input’s initial text in its `value` attribute but puts a textarea’s text between its tags. In React, use `value` for the textarea too. section 9.2.5
Try it in a task list
Place an input field at the end of each task’s ordered list of steps, inside a form with a button. Use it to add a new step; keep each existing step’s completion checkbox separate from the text entry field. section 13.3






