Using React Version: 16.8.4
When using blank object or array as a setter for function inside useEffect does cause infinite loop. However using string or number does not trigger this. Here's the minimal example:
function Example() {
const [count, setCount] = useState(0);
const [foo, setFoo] = useState({});
useEffect(() => {
console.log("Infinite Loop");
setCount(100); // doesn't cause infinite loop.
// but this does
// setFoo({}); // or setFoo([]);
});
return <div />;
}
I don't know if it's a bug or default behaviour because in earlier version of react (in v16.7.0-alpha.0), both string and number also causing infinite loop which seems to be fixed in latest one.