美文网首页
[react]12、ref

[react]12、ref

作者: 史记_d5da | 来源:发表于2021-11-08 07:59 被阅读0次

1、ref

创建ref可以对原生DOM的操作
创建的方式
1、传入字符串
使用时通过 this.refs.传入的字符串格式获取对应的元素
<h2 ref="titleRef">titleRef标题</h2>
2、传入一个对象
对象是通过 React.createRef() 方式创建出来的;
使用时获取到创建的对象其中有一个current属性就是对应的元素;
this.titleObj = createRef()
<h2 ref={this.titleObj}>函数标题</h2>
3、传入一个函数
该函数会在DOM被挂载时进行回调,这个函数会传入一个 元素对象
<h2 ref={(e) => {this.titleFunc = e}}>函数标题</h2>

import React, { PureComponent, createRef } from 'react'
 class Counter extends PureComponent {
    constructor(props) {
        super(props);
        this.state = {  counter: 0 }
    }
    render() {
        return (
            <div>
                <h2>当前计数器:{this.state.counter}</h2>
                <button onClick={e => this.increment()}>+1</button>
            </div>
        )
    }
    increment() {
        const newData = this.state.counter + 1;
        this.setState({
            counter: newData
        })
    }
}
export default class App extends PureComponent {
    constructor(props) {
        super(props);
        this.titleObj = createRef()
        this.counterRef = createRef()
        this.titleFunc = null;
    }
    render() {
        return (
            <div>
                <h2 ref="titleRef">titleRef标题</h2>
                <h2 ref={this.titleObj}>函数标题</h2>
                <h2 ref={(e) => {this.titleFunc = e}}>函数标题</h2>
                <button onClick={e => this.changeText()}>改变标题</button>
                <hr/>
                <Counter ref={this.counterRef}/>
                <button onClick={e => this.counterClick()}>App内部点击</button>
            </div>
        )
    }
    changeText() {
        // 1、字符串
        this.refs.titleRef.innerHTML = "字符串Hello Ref 好标题"
        // 2、对象方式
        this.titleObj.current.innerHTML = "改变对象文字"
        // 3、函数方式
        this.titleFunc.innerHTML = "函数方式改变对象"
        console.log(this.titleFunc)
    }
    counterClick () {
        this.counterRef.current.increment()
        console.log(this.counterRef)
    }
}

注:
不能在函数组件上使用 ref 属性,因为他们没有实例
但是可以通过 React.forwardRef(hooks相关知识)

2、ref的转发

在开发中我们可能想要获取函数式组件中某个元素的DOM,通过forwardRef高阶函数

const Profile = forwardRef(function(props, ref) {
    console.log(props.name);
    return (<p ref={ref}>Profile</p>)
})

相关文章

  • [react]12、ref

    1、ref 创建ref可以对原生DOM的操作创建的方式1、传入字符串使用时通过 this.refs.传入的字符串格...

  • react-ref

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

  • React中ref的使用

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

  • 如何使用React Refs

    如何在React中利用ref以及ref转发,回调ref和HOC React Ref是有用的功能,可作为从父组件中引...

  • React学习笔记(三)

    React中的 ref 的使用 ref是一个引用,在React中使用ref来直接获取DOM元素从而操作DOM Re...

  • React 中 ref 的使用

    ref是reference的简写,它是一个引用,在react中,我们使用ref来操作DOM。 在react中,我们...

  • React 中的转发ref

    在 React V16.3� 中react引入了: React.forward((props, ref) => R...

  • React refs

    1.React.createRef() React.createRef可以给Dom元素添加ref。React.cr...

  • react ref

    在 React16 新版本中,新引入了 React.createRef 与 React.forwardRef 两个...

  • react ref

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

网友评论

      本文标题:[react]12、ref

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