I have a Master component that holds several Child components. Child state is kept in Master. The first state the child gets is, FORM_LOADED. Then I have the below code in my Master component.
const Master = (props) => {
const [formStates, setFormStates] = useState()
useEffect(() => {
setFormStates({...formStates, Master: "FORM_LOADED"})
},[])
render (
<>
<Child view="Model1" formStates={formStates} setFormStates={setFormStates} />
<Child view="Model2" formStates={formStates} setFormStates={setFormStates} />
<pre>{JSON.stringify(formStates, undefined, 4)}</pre>
</>
)
}
const Child = (props) => {
useEffect(() => {
props.setFormStates({...props.formStates, [props.view]: "FORM_LOADED"})
}, [])
render (
<p>{props.view}</p>
)
}
My problem is that the state variable formStates always gets:
{
Master: "FORM_LOADED",
Model2: "FORM_LOADED"
}
Model1 doesn't appear in formStates. If I add more child components, only the last component is reflected in formStates. How can I get the Model1 to the formStates?