美文网首页
6-refs 拿到真实的 dom 元素

6-refs 拿到真实的 dom 元素

作者: 谷子多 | 来源:发表于2018-05-03 23:44 被阅读0次

以前的方式:

在元素上给一个ref的属性,值是字符串,如 :ref="d1"
访问这个真是的dom元素 : this.refs.d1

现在推荐的方式,回调

在元素上给一个ref属性,值是回调函数,会把当前dom元素当参数传到回调函数里面。
过程解析:这个节点被渲染的时候,这个回调函数会被调用,会传递一个参数:这个真实的DOM元素,你就可以做任何事情。

ref={elt=>{this.d1=elt}} //将这个DOM挂载到组件实例上
this.d1 //访问这个真实的DOM元素

在父组件上拿到子组件ref

class Sub extends Component{
    constructor(props){
        super(props)
    }
    render(){
        let {d1} = this.props
        return (
            <div>
                <div ref={d1}>子组件的div</div>
            </div>
        )
    }
}

export default class Refs extends Component{
    constructor(props){
        super(props)
    }       
    getChildDom=()=>{
        console.log(this.d1)
    }
    render(){
        return (
            <div>
                <Sub d1={elt=>{this.d1=elt}}></Sub>
                <div
                
                >会被拿到</div>
                <button onClick={this.getChildDom}>getChildDom</button>
            </div>
        )
    }
}

记住一个原则:能不用 ref 就不用。特别是要避免用 ref 来做 React.js 本来就可以帮助你做到的页面自动更新的操作和事件监听。多余的 DOM 操作其实是代码里面的“噪音”,不利于我们理解和维护。

相关文章

  • 6-refs 拿到真实的 dom 元素

    以前的方式: 在元素上给一个ref的属性,值是字符串,如 :ref="d1"访问这个真是的dom元素 : this...

  • jquery与js加载顺序区别

    1.通过原生的JS入口函数可以拿到DOM元素,也可以拿到DOM元素的宽高。通过JQuery入口函数可以拿到DOM元...

  • Vue虚拟Dom与diff算法原理

    什么是虚拟DOM? 真实的元素节点: 为什么使用虚拟DOM? 虚拟DOM的作用是什么? 虚拟DOM和真实DOM的区...

  • Vue之ref的使用

    1.基本用法,本页获取Dom元素节点 ref除了可以获取本页面的dom元素,还可以拿到 子组件中 的data 和 ...

  • Virtual DOM(虚拟DOM)

    一、概念 Virtual DOM 是一个映射真实DOM的Javascript对象,如果需要改变任何元素的状...

  • vue操作dom

    1、 this.$refs.xxx拿到虚拟dom,可以进行真实dom的一切操作 1)在标签中添加ref="xxx"...

  • react基础语法1:render函数

    react-dom: 把jsx语法(react独有的语法)转换为真实的dom元素 最终渲染的index.html文...

  • vue 项目的应用总结

    1.$refs的使用:分三种情况 (1)在普通dom元素上:this.$refs.aa 拿到的是dom节点,类似于...

  • jS|DOM操作

    DOM节点的获取 DOM节点的创建 DOM节点删除 修改DOM元素 将指定两个DOM元素交换位置

  • React中的虚拟DOM

    虚拟DOM是什么?一个虚拟DOM(元素)是一个一般的js对象,准备的说是一个对象树(倒立的)虚拟DOM保存了真实D...

网友评论

      本文标题:6-refs 拿到真实的 dom 元素

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