23
loading...
This website collects cookies to deliver better user experience
Mise en place des composants
a - On crée notre composant Checkboxe. Celui-ci reçoit des props. Un permettra de gérer son état checked, id pour matcher avec le label, et la fonction handleChange sur l’évènement onChange de l’input.
import React from 'react';
import PropTypes from 'prop-types';
const Checkboxe = ({
label,
checked,
handleChange,
id,
}) => {
console.log('id : ' + id);
return (
<div>
<input
type="checkbox"
id={id}
name={id}
checked={checked}
onChange={handleChange}
/>
<label htmlFor={id}>
{label}
</label>
</div>
);
}
Checkboxe.defaultProps = {
label: 'item 1',
id: 'scales',
checked: true,
handleChange: () => {},
array: [],
}
Checkboxe.propTypes = {
label: PropTypes.string,
id: PropTypes.string,
checked: PropTypes.bool,
handleChange: PropTypes.func,
array: PropTypes.array,
}
export default Checkboxe;
import React from 'react';
import Checkboxe from './Checkboxe';
const CheckForDev = () => {
return (
<div className="container">
<div className="checkboxes-container">
<Checkboxe
label="Item 1"
id="checkboxe1"
checked={}
handleChange={}
/>
<Checkboxe
label="Item 2"
id="checkboxe2"
checked={}
handleChange={}
/>
<Checkboxe
label="Item 3"
id="checkboxe3"
checked={}
handleChange={}
/>
</div>
</div>
);
}
export default CheckForDev;
const [check1, setCheck1] = useState(false);
const [check2, setCheck2] = useState(false);
const [check3, setCheck3] = useState(false);
<Checkboxe
label="Item 1"
id="checkboxe1"
checked={check1}
handleChange={() => setCheck1(prev => !prev)}
/>
<Checkboxe
label="Item 2"
id="checkboxe2"
checked={check2}
handleChange={() => setCheck2(prev => !prev)}
/>
<Checkboxe
label="Item 3"
id="checkboxe3"
checked={check3}
handleChange={() => setCheck3(prev => !prev)}
/>
console.log('id : ' + id);
const handleCheck1 = useCallback(() => {
setCheck1(prev => !prev);
}, []);
const handleCheck2 = useCallback(() => {
setCheck2(prev => !prev);
}, []);
const handleCheck3 = useCallback(() => {
setCheck3(prev => !prev);
}, []);
handleChange={handleCheck1}
handleChange={handleCheck2}
handleChange={handleCheck3}
const Checkboxe = React.memo(({
label,
checked,
handleChange,
id,
classes
}) => {
console.log('id : ' + id);
return (
<div className={classes} >
<input
type="checkbox"
id={id}
name={id}
checked={checked}
onChange={handleChange}
/>
<label htmlFor={id}>
{label}
</label>
</div>
);
})