In React DOCs, about the useEffect()
hook, we get that:
"Effects scheduled with useEffect don’t block the browser from updating the screen."
Tip
Unlike componentDidMount or componentDidUpdate, effects scheduled with useEffect don’t block the browser from updating the screen.
What does it mean by that exactly?
Example: Imagine that I have the following:
- A controlled input
- And a useEffect after 1st render that does some expensive synchronous computation.
function App() {
const [inputValue,setInputValue] = React.useState('');
useEffect(()=>{
// RUN SOME EXPENSIVE SYNCHRONOUS FUNCTION
},[]);
return (
<input value={inputValue} onChange={()=>setInputValue(event.target.value)}/>
);
}
Does it mean that I would be perfectly able to use my input
(which is controlled by React using JS, which is single-threaded) even when that heavy synchronous computation is running? If so, how can this be?