在子组件中克隆从父组件传递的对象 - React Hooks

Posted

技术标签:

【中文标题】在子组件中克隆从父组件传递的对象 - React Hooks【英文标题】:Clone an object passed from a parent component in a child component - React Hooks 【发布时间】:2021-09-02 17:45:55 【问题描述】:

我使用扩展运算符和 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>
   )

【问题讨论】:

【参考方案1】:

您的组件第一次呈现获取请求时尚未完成,因此数据将为空(使用const data, loading = useFetch(url); 查看此内容)

然后,您的子组件使用该 null 来设置 copyData 的默认值,而您永远不会更新它。

您需要添加一个 useEffect 以在每次数据更改时调用 setCopyData。可能是这样的:

useEffect(() => 
  setCopyData(...data);
, [data]);

【讨论】:

以上是关于在子组件中克隆从父组件传递的对象 - React Hooks的主要内容,如果未能解决你的问题,请参考以下文章

从父组件调用时,angular 2 变量在子组件方法中返回 null

React:将图像从父组件中的 this.state 传递给子组件

在 React.js 的父组件中使用 react-router 时,如何使用 react context API 将数据从父组件传递到子组件?

如何在 React 中将不同的道具从父组件传递给多个子组件?

React-Router-Dom v5.2 ,无法从父级收到的道具中将道具传递给子组件

React:将状态传递给子组件