I have a little problem with my code. When I render my component I've got this error on console console
Maximumupdate depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
Below is part of my sample code:
MainComponent:
const saveData = (data) => {
setDataArray(prevState => [...prevState, data]);
}
return (
<Fragment>
{dataArray.map((element, index) => {
return (<MyComponent data={element} index={index} save={saveData}/>)
})}
</Fragment>
)
dataArray is an array of objects
MyComponent:
const MyComponent = (props) => {
const [data, setData] = useState(props.data);
useEffect(() => {
props.save(data);
}, [data]);
}
Is the problem in updating the state up to main component? Or I can't render my child component using map()?
indexprop?keyprop toMyComponentinMainComponent? I think it is because yourMyComponentis getting unmounted & re-mounted on every render ofMainComponent. To verify this, you can doconsole.logfrom anuseEffectwith empty dependency inMyComponentconst saveData = (data) => { let array = _.cloneDeep(dataArray); const index = _.findIndex(array, {id: data.id}); array.splice(index, 1, data); setDataArray(array); }I don't know if it correct/elegant way, but it works now