1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
import { useEffect, useState } from "react";
function Demo(props) {
const [stateVal, setStateVal] = useState('');
useEffect(() => {
console.log('effet on mounted');
return () => {
console.log('effet on unmounted');
}
}, []);
useEffect(() => {
console.log('props.val a changé');
}, [props.val]);
useEffect(() => {
console.log('stateVal a changé');
}, [stateVal]);
useEffect(() => {
console.log('stateVal ou props.val a changé');
}, [stateVal, props.val]);
return (
<div>
props.val<input type="text" value={props.val} onChange={e => props.onValChanged(e.target.value)}/>
<br/>
stateVal<input type="text" value={stateVal} onChange={ e => setStateVal(e.target.value)}/>
</div>
);
}
export default function App() {
const [show, setShow] = useState(false);
const [val, setVal] = useState('');
function toggle() {
setShow(!show)
}
return (
<div className="App">
<button onClick={toggle}>toggle</button>
{ show && (<Demo val={val} onValChanged={setVal}/>) }
</div>
);
} |
Partager