43
loading...
This website collects cookies to deliver better user experience
const [state, setState] = useState(0);
const [state, setState] = useState({foo:null, bar:null, baz:null});
const [state, setState] = useState({foo:null, bar:null, baz:null});
useEffect(() => {
// code untuk useEffect
});
setState({ ...state, foo:{value} });
const [state, setState] = useState({foo:null, bar:null, baz:null});
useEffect(() => {
setState({ ...state, foo:{prop: "value"} });
});
Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.
useEffect(()=>{},[]);
const [state, setState] = useState({foo:null, bar:null, baz:null});
useEffect(() => {
setState({ ...state, foo:{prop: "value"} });
}, []);
React Hook useEffect has a missing dependency: 'state'. Either include it or remove the dependency array. You can also do a functional update 'setState(s => ...)' if you only need 'state' in the 'setState' call react-hooks/exhaustive-deps
state
pada array argumen kedua useEffect, dengan begini, useEffect tidak akan merender kembali callback function-nya kecuali terdapat perubahan pada state. mari kita perbaiki code kita sebelumnya :const [state, setState] = useState({foo:null, bar:null, baz:null});
useEffect(() => {
setState({ ...state, foo:{prop: "value"} });
}, [state]);
Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.
…state
maka kita sebenarnya sedang melakukan perubahan pada state, sedangkan state sedang dimonitor peribahanya oleh useEffect, sehingga karena terjadi perubahan pada state, useEffect kembali melakukan render pada callback function-nya, begitu dirender ulang, terjadi lagi perubahan pada state pada bagian …state
, dan akan terus berulang seperti itu, maka terjadilah infinity loop pada useEffect.const [state, setState] = useState({foo:null, bar:null, baz:null});
useEffect(() => {
setState(prevState => ({ ...prevState, foo:{prop: "value"} }));
}, []);