reactjs - 在子组件中克隆从父组件传递的对象 - React Hooks
问题描述
我使用扩展运算符和 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]);
推荐阅读
- javascript - 如何在按钮单击时从数组javascript调用函数
- javascript - 日志 = 新日志(“调试”);
- unity3d - 孩子们在 Unity 中以父母为中心“自动居中”
- javascript - 有没有办法使用javascript在客户端对视频文件(.mkv)进行一些操作?
- mysql - closeCells() 查询说明
- javascript - “i”变量在控制台中未定义
- ruby-on-rails - Rails + Sidekiq: Sidekiq.options[:concurrency] returns 10 instead of 3, which is the value in my config/sidekiq.yml file
- jquery - 前端 jQuery 代码无法使用 Node.js 正确执行
- ssl - OpenSSL SSL_connect:SSL_ERROR_SYSCALL 连接到 api.telegram.org:443
- bash - 使用 curl 从远程服务器下载最新文件