美文网首页
React各种场景Ref用法

React各种场景Ref用法

作者: 板栗炖牛肉 | 来源:发表于2021-02-24 15:13 被阅读0次

前言

仅记录不同场景下ref使用,不断补充

解决方案

父组件class,子组件hooks场景

  1. 父组件中
   constructor(props) {
        super(props);
        this.children = React.createRef();    //此处初始化
    }

    render() {
           <Children ref={this.children}/>
    }
  1. 子组件
const Children = (props, ref) => {

    useImperativeHandle(ref, () => ({
        hook
    }));

    const hook = () => {
        console.info('消息打印')
    };

    return (
        <div>
            我是子级
        </div>
    )
};


export default forwardRef(Children);

父组件class,子组件hook或者class,但是有withRouter(react-router-dom)路由包裹

1.父组件

   constructor(props) {
        super(props);
        this.children = React.createRef();    //此处初始化
    }

    render() {
           <Children wrappedComponentRef={this.children}/>
    }

2.子组件(hook举列子)

const Children = (props, ref) => {

    useImperativeHandle(ref, () => ({
        hook
    }));

    const hook = () => {
        console.info('消息打印')
    };

    return (
        <div>
            我是子级
        </div>
    )
};


export default withRouter(forwardRef(Children));

被高级组件包裹(此处举列自定义高级组件)

1.高级组件

export function withComponent(WrappedComponent) {
    class Component extends React.Component {
        render() {
            return (
                <WrappedComponent {...this.props} ref={this.props.forwardRef} />   //forwardRef为代理转发
            )
        }
    }
    return Component;
}
  1. 父级组件
  constructor(props) {
        super(props);
        this.children = React.createRef();    //此处初始化
    }

    render() {
           <Children forwardRef={this.children}/>
    }

3.子级组件

const Children = (props, ref) => {

    useImperativeHandle(ref, () => ({
        hook
    }));

    const hook = () => {
        console.info('消息打印')
    };

    return (
        <div>
            我是子级
        </div>
    )
};


export default withComponent(Children);

相关文章

  • React各种场景Ref用法

    前言 仅记录不同场景下ref使用,不断补充 解决方案 父组件class,子组件hooks场景 父组件中 子组件 父...

  • react 之 ref

    React的ref有3种用法: 字符串(已废弃) 回调函数 React.createRef() (React16....

  • react ref

    转载React ref的用法[https://www.cnblogs.com/mengff/p/9554779.h...

  • React Native findNodeHandle直接操作

    用法 JS端通过ref直接操作组件内方法import { findNodeHandle } from 'react...

  • react ref 常见用法

    react ref ref 主要在于提供父组件能直接操作子组件的能力,这里子组件可能是 dom 元素也可能是 re...

  • React ref属性

    一、用途 ref属性允许我们使用react操作真实DOM 二、用法 ref属性的值是一个箭头函数,参数接收真实的D...

  • react-ref

    ref:react对真实dom的引用 ref在reactElement上 ref在react组件上

  • React ref的用法总结

    React的ref有3种用法:1:字符串用法(这种用法已经被废弃了,在版本16以前还可以使用)2:回调函数在这里,...

  • React中ref的使用

    React中Ref是什么? ref是React提供的用来操纵React组件实例或者DOM元素的接口。 ref的作用...

  • Vue ref用法 -- 朋友圈全文收起

    1、普通的ref用法 2、for循环中ref用法 3、多个for循环中ref用法 朋友圈 全文-收起 小程序不支持...

网友评论

      本文标题:React各种场景Ref用法

      本文链接:https://www.haomeiwen.com/subject/rkssfltx.html