我有一个父组件,它的状态包含一个对象数组:
function ParentComponent(props) {
const [objects, setObjects] = React.useState([...props.objects]);
const handleObjectRefresh = () => {
/**
* Refresh objects
*/
setObjects([
...newObjects
])
}
return (
<div>
<Button onClick={handleObjectRefresh} >Refresh</Button>
{objects.map((obj, index) => {
return(
<ChildComponent obj={obj} />
)
})
}
</div>
)
}
function ChildComponent(props){
const [objParam1, setObjectParam1] = React.useState(props.obj.param1);
const [objParam2, setObjectParam2] = React.useState(props.obj.param2);
useEffect(()=> {
setObjectParam1(props.obj.param1);
setObjectParam2(props.obj.param2);
}, [props.obj])
return (
<div>
<Texfield defaultValue={objectParam1}/>
<Texfield defaultValue={objectParam2}/>
</div>
)
}
我现在的问题是,如果删除对象,Textfield
的当前默认值不会更新,但是子组件中的对象确实发生了变化,文本字段默认值是以前的状态,我想知道当父组件中的对象列表发生变化时,如何彻底改变子状态?
编辑
为了解决这个问题,我只是将 defaultValue
改为 value