我使用了 spread 运算符和 useState 来克隆从父组件传递的对象,但它返回了一个空对象。任何帮助将不胜感激。谢谢 :)
const Parent = () =>{
//I fetch data from my custom hook
const {data} = useFetch(url)
return(
<Child data={data}/>
)
}
const Child = ({data}) =>{
const [copyData, setCopyData] = useState({...data});
//it returns an empty object here
const testing = () =>{
console.log(copyData)
}
return(
<button onClick={testing}>Testing</button>
)
}
您的组件第一次呈现获取请求尚未完成,因此数据将为空(用于const {data, loading} = useFetch(url);
查看此内容)
您的子组件然后使用该 null 来设置 copyData 的默认值,并且您永远不会更新它。
每次数据更改时,您都需要添加一个 useEffect 来调用 setCopyData。可能是这样的:
useEffect(() => {
setCopyData({...data});
}, [data]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句