ref的作用是获取实例,可能是DOM实例,也可能是classComponent的实例。
    问题:

    • 如果目标组件是一个Function Component的话,是没有实例的(PureComponent),此时用ref去传递会报错
    • 如果你是一个库的开发者的话,使用该库的人是不知道库的组件类别的,那么当库的组件类别是Function Component的时候,使用者想用ref获取组件,怎么办?
    • redux中的connect方法将组件包装成高阶组件(HOC),那么我如何通过ref去获取包装前的组件实例?
    • props不能传递ref

    React.forwardRef 存在的意义就是为了解决以上问题
    用法:

    1. import React from 'react'
    2. const TargetComponent = React.forwardRef((props, ref) => <input type="text" ref={ref} />)
    3. export default class Comp extends React.Component {
    4. constructor(props) {
    5. super(props)
    6. this.ref = React.createRef()
    7. }
    8. componentDidMount() {
    9. this.ref.current.value = 'ref get input'
    10. }
    11. render() {
    12. return <TargetComponent ref={this.ref} />
    13. }
    14. }

    参考文档:https://juejin.cn/post/6844904070453395469