React 尝试在功能组件中调用子 (useRef) 函数

Posted

技术标签:

【中文标题】React 尝试在功能组件中调用子 (useRef) 函数【英文标题】:React trying to call child (useRef) function in a functional component 【发布时间】:2020-02-08 15:38:35 【问题描述】:

我有一个子组件正在生成并显示一个随机数。 我正试图从父母那里控制它。 但参考电流为空。

如何在功能组件中从父级调用子函数https://codesandbox.io/s/busy-joliot-85yom

function App() 
  const child = useRef();
  const generate = () => child.current.generate();

  return (
    <div className="App">
    <br />
      <Child ref=child></Child><br />
      <button onClick=generate>regenerate from parent (Not working)</button>
    </div>
  );


function Child(props)
  const [number, setNumber] = useState(0);
  const generate = () => setNumber(Math.round(Math.random() * 10));
  return <div>number <br /> <button onClick=generate>regenerate from child</button></div>;

谢谢

【问题讨论】:

为什么不将() =&gt; setNumber(Math.round(Math.random() * 10)); 传递给父子生成? @HMR 你能在这里展示这个例子吗:codesandbox.io/s/busy-joliot-85yom ?谢谢 当然,here 就是一个例子。 查看控制台:警告:函数组件不能被赋予引用。尝试访问此 ref 将失败。你的意思是使用 React.forwardRef() 吗? 【参考方案1】:

你不能在函数组件中使用 ref 属性,但是你可以自己处理任何 ref 对象,只是不要称它为“ref”,react 不喜欢它。 检查我的example

【讨论】:

以上是关于React 尝试在功能组件中调用子 (useRef) 函数的主要内容,如果未能解决你的问题,请参考以下文章

为子组件(useRef)反应滑轮事件?

使用 useRef 从 Reactjs 中的父级调用子函数

模拟 React useRef 或带有酶和玩笑的功能组件内的函数?

功能组件中的 React Lifecycle 问题(子组件中的数据未定义)

react 函数式组件ref的使用

如何在功能组件中混合使用 useCallback 和 useRef