美文网首页
React 中 ref 的使用

React 中 ref 的使用

作者: 泡杯感冒灵 | 来源:发表于2022-07-14 16:56 被阅读0次
ref是reference的简写,它是一个引用,在react中,我们使用ref来操作DOM。
  • 在react中,我们可以通过e.target来获取到一个事件对应的DOM。还可以通过ref来获取到元素对应的DOM. ref后边跟一个箭头函数,箭头函数会自动接收一个参数,这个参数名字可以随便定义,表示当前元素,this.input是一个引用,指向了input对应的DOM节点。
                    <input
                        id="inserArea"
                        className="input"
                        value={this.state.inputValue}
                        onChange={this.handleInputChange}
                        ref={(input) => {this.input = input}}
                    />

      handleInputChange(e){
        // 通过e.target获取DOM节点
        // const value = e.target.value; 

        // 通过ref获取DOM节点
        const value = this.input.value;
        this.setState(()=>({
            inputValue:value
        }))
    }
实际上,我们尽量不要使用ref,也就是尽量不要直接操作DOM,但是有时候我们业务场景非常复杂的时候,比如动画,不可避免的用到一些DOM标签,这个时候就要用ref来获取DOM。
  • 当ref与setState合用的时候,会出现一些坑,DOM的获取并不及时,原因是setState是异步的,如果需要在数据变化(页面更新)之后获取DOM,我们要把获取DOM的语法,放在setState的第二个参数里,setState的第二个参数是一个函数,我们可以把获取DOM的逻辑放在里边。setState的第二个参数会在setState异步执行完毕之后执行。这样就能保证,当第二个参数执行的时候,页面已经被更新完了,这个时候获取页面上的DOM,肯定是不会错的。
 handleBtnCick(){
        this.setState((prevState)=>({
            list:[...prevState.list,prevState.inputValue],
            inputValue:''
        }))
        // 这里获取的DOM并不完整,因为先执行
        console.log(this.ul.querySelectorAll('div').length)
    }

 // setState有第二个参数,这个参数是一个函数,它会再setState异步执行完毕之后,也就是页面更新完毕后执行。
 handleBtnCick(){
        this.setState((prevState)=>({
            list:[...prevState.list,prevState.inputValue],
            inputValue:''
        }),()=>{
            console.log(this.ul.querySelectorAll('div').length)
        })
    }

相关文章

  • React学习笔记(三)

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

  • React 中 ref 的使用

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

  • React中ref的使用

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

  • React中ref的使用

    在react中,一般情况下,数据通过props来交互,但是在某些情况下,仍需用到ref,在官网中是这样说的 In ...

  • React 中 ref 的使用

    ref 是一个入口 允许您直接访问DOM元素或组件实例。使用ref的三大原则:1.可以在dom元素上面使用ref属...

  • 如何使用React Refs

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

  • React Ref使用

    如何通过refs获得对应的DOM? 使用时通过 this.refs.传入的字符串格式获取对应的元素,使用时 thi...

  • React Ref的使用

    React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上。这个特殊的属性...

  • react自定义组件中使用ref

    一、自定义组件使用ref并且透传子组件ref 自定义组件中使用ref需要用到react的2个hooks:1.for...

  • 组件ref的使用

    自己封装的组件,想使用ref,调用内部的方法1.使用React.forwardRef,包裹组件。 2.接收ref属...

网友评论

      本文标题:React 中 ref 的使用

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