在父类组件中使用函数组件引用

Posted

技术标签:

【中文标题】在父类组件中使用函数组件引用【英文标题】:Use function component ref inside a Parent class component 【发布时间】:2021-09-02 13:50:43 【问题描述】:

是否可以从类组件Parent 访问函数组件Child 的函数和变量?

class Parent extends React.Component
    constructor(props) 
        super(props);
        this.child = React.createRef();
    

    hello = () => 
        this.child.current.hello()
    

    render()
        return(
            <div>
                ...
                <Child ref=this.child />
                <button onClick=this.hello
            </div>
        )
    


const Child = forwardRef((props, ref) => 

  useImperativeHandle(ref, () => (

    hello() 
      alert("hello from Child");
    

  ));

  return <h1>Hi</h1>;
);

【问题讨论】:

这应该可以工作 【参考方案1】:

是的,你的实现应该可以工作。

你只需要改变你孩子的一件小事

const Child = React.forwardRef((props, ref) => 

  const hello = () => 
    alert('hello from child')
  

  React.useImperativeHandle(ref, () => (
    hello
  ))

  return <div>hi</div>
)

【讨论】:

以上是关于在父类组件中使用函数组件引用的主要内容,如果未能解决你的问题,请参考以下文章

Vue-组件嵌套之 父组件向子组件传值

VueJS:在子组件中触发事件时在父组件中运行函数

vue组件之间的通信以及如何在父组件中调用子组件的方法和属性

React - 使用 refs 将焦点函数传递给子组件

vue组件的一些知识理解

Vue2