## A react component that contains a checkbox with a `useState` hook.
The useState hook is a special function that lets us add state to a function component. It takes an initial value and returns a stateful value and a function to update it.
:::info
const [state , setState]= useState( initialValue )
:::
When the state is `false` checkbox is unchecked and when state is `true` then the checkbox is checked.
### **code:**
``` jsx
import React, { useState, useReducer } from "react";
import ReactDOM from "react-dom";
const Checkbox = ({ fnClick, fnChange, title = "", checked = false }) => (
<label>
<input
onClick={e => {
if (fnClick !== undefined) fnClick(e.target.checked);
}}
onChange={e => {
if (fnChange !== undefined) fnChange(e.target.checked);
}}
type="checkbox"
checked={checked}
/>
{" Checkbox " + title}
</label>
);
const Filtros = () => {
const initialState = {
click: false,
change: false
};
const reducer = (state, action) => ({ ...state, ...action });
const [state, setState] = useReducer(reducer, initialState);
const clearFilter = () => setState(initialState);
return (
<div className="App">
<button onClick={() => clearFilter()}>Limpiar</button>
<br />
<Checkbox
title="Click"
fnClick={v => setState({ click: v })}
checked={state.click}
/>
<br />
<Checkbox
title="Change"
fnChange={v => setState({ change: v })}
checked={state.change}
/>
<br />
click: {state.click ? "true" : "false"}
<br />
change: {state.change ? "true" : "false"}
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<Filtros />, rootElement);
```
In this example, we import the useState hook from the react library,also used reactDom. then we define a functional component called Checkbox that uses the useState hook to define a state variable Checked with an initial value of false.
``` html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<title>React App</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root"></div>
</body>
</html>
```
The state is a data or properties. states are mutable,their value can change and useState() hook is used to handle and manage your states.
The useState() hook allows you to create,track and update a state in functional components.