React属性之Refs

  • 1 介绍
  • 2 使用方法
    • 2.1 createRef(版本>=React16.3)
    • 2.2 回调Refs
    • 2.3 String类型的Refs(已过时,不推荐使用)
    • 2.4 useRef(React Hooks)

1 介绍

react组件的三大属性:

  1. props属性:封装传递给组件的参数
  2. state属性:组件的状态,当值发生改变后,重新渲染组件
  3. refs属性:
    (1)通过该属性可以去访问DOM元素或render函数中的react元素(虚拟的DOM元素) ——DOM元素或render函数中的react元素的代理(句柄)
    (2)本质是ReactDOM.render()函数返回的实例(组件实例或DOM节点)

Refs在计算机中称为弹性文件系统。React中的Refs提供了一种方式,允许我们访问DOM节点或在render方法中创建的React元素。本质为ReactDOM.render()返回的组件实例,如果是渲染组件则返回的是组件实例,如果渲染dom则返回的是具体的dom节点。

作用:Refs时React提供给我们安全访问DOM元素或者某个组件实例的句柄。在类组件中,React将ref属性中第一个参数作为DOM中的句柄。在函数组件中,React用hooks的api useRef也能获得ref。

2 使用方法

2.1 createRef(版本>=React16.3)

一般在构造函数中将refs分配给实例属性,以供组件的其他方法中使用。

1、对于html元素:可以获取元素实例

示例代码:

class Refs extends React.Component {constructor(props) {super(props);// 在构造函数中初始化一个ref,然后在return中就可以使用了this.myRef = React.createRef();console.log(this.myRef);}componentDidMount() { // 在render()函数执行完成后调用this.myRef.current.innerHTML = "橘猫吃不胖"; // this.myRef中有一个current属性}render() {return (<div>{/*如果ref属性被用于html,那么它的值就是底层DOM元素*/}<div ref={this.myRef}></div></div>);}
}


2、可以和类组件进行绑定 —— 代表类组件的实例

示例代码:

class Refs extends React.Component {constructor(props) {super(props);this.myRef = React.createRef();}componentDidMount() {// 在父组件中调用了子组件的方法this.myRef.current.change();}render() {return <Children ref={this.myRef}/>}
}class Children extends React.Component {change() {console.log("橘猫吃不胖变身");}render() {return <span>橘猫吃不胖</span>}
}

2.2 回调Refs

React将在组件挂载时,会调用ref回调函数并传入DOM怨怒是,当卸载时调用它并传入null。早componentDidMount或componentDidUpdate触发前,React会保证refs一定是最新的。

示例代码:

class Refs extends React.Component {constructor(props) {super(props);this.targetRef = null;this.myRef = (e) => this.targetRef = e;}componentDidMount() {if (this.targetRef) {this.targetRef.innerHTML = "橘猫吃不胖";}}render() {return <div ref={this.myRef}/>}
}

2.3 String类型的Refs(已过时,不推荐使用)

示例代码:

class Refs extends React.Component {constructor(props) {super(props);this.targetRef = null;this.myRef = (e) => this.targetRef = e;}componentDidMount() {console.log("this.refs" + this.refs.container);}render() {return <div ref={this.myRef}>橘猫吃不胖</div>}
}

2.4 useRef(React Hooks)

function HookRef(props) {const inputElement = useRef();return (<div><input ref={inputElement}/><button onClick={() => {inputElement.current.focus()}}>获得焦点</button></div>)
}

React属性之Refs相关推荐

  1. React的三大属性之refs的一些简单理解

    什么是refs? Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素. Ref转发是一项将ref自动通过组件传递到子组件的技巧. 通常用来获取DOM ...

  2. React 中的 refs

    Refs Refs是什么 Refs 提供一种访问在render方法中DOM节点或者React元素的方式. Refs作用 你可以通过它获得DOM节点或者React元素.一般用在处理焦点,文本选择,触发动 ...

  3. React中的refs是用来做什么的?

    refs是什么? React 中的 Refs提供了一种方式,允许我们访问 DOM节点或在 render方法中创建的 React元素 本质为ReactDOM.render()返回的组件实例,如果是渲染组 ...

  4. React属性与状态

    React属性与状态 属性和状态作为组件之间数据流动的途径. 单向数据流 单向数据流:更新 DOM 的数据总是从顶层流下来,用户事件不直接操作 DOM,而是操作顶层数据.这些数据从顶层流下来同时更新了 ...

  5. React基础之Refs的理解与使用

    目录 为什么会用到Refs 何时使用Refs Refs有哪些使用方式 字符串形式的refs 回调形式的refs createRef的使用 为什么会用到Refs 我们在使用React写代码的时候对Ref ...

  6. React 属性验证 propTypes

    React 组件可以根据预先设置进行属性验证. React prop验证使用 propTypes,它可以保证我们的应用组件被正确使用,React.PropTypes 提供很多验证器 (validato ...

  7. reactjs组件实例三大属性之refs使用示例:字符串形式的ref、回调函数形式的ref、回调ref中回调执行次数的问题

    1_字符串形式的ref <!DOCTYPE html> <html lang="en"> <head><meta charset=&quo ...

  8. React学习(三):通过 React 编写名片组件(React属性)

    阿里云服务器0元试用,首购低至0.9元/月起 [开发云]年年都是折扣价,不用四处薅羊毛 前置内容阅读 React学习(二):编写 React 组件并成功挂载 效果预览: 1. 启动 my-projec ...

  9. 【React】React三大属性:Props、State、Refs

    文章目录 Props State Ref Props React框架定义了一个Props的概念, 专门用来实现React组件接受参数的输入. 每个组件对象都会有props(properties的简写) ...

最新文章

  1. loadrunner11 linux服务器,Loadrunner怎么执行linux服务器上的shell脚本?
  2. java major version: 51,Unsupported major.minor version 51.0的原因与解决办法
  3. sqlprofiler 常用调试方法
  4. 网上商城留言板的实现——留言展示到留言板
  5. Kali Linux 和 渗透测试
  6. 在block中使用self
  7. android弹窗不能手动关闭_Android弹窗的实现及相关bug
  8. 老李分享:HTTP session原理及应用 1
  9. 深度学习(目标检测。图像分割等)图像标注工具汇总
  10. 微波网络中参考面移动对散射参量的影响
  11. spring 源码下载
  12. cad标注样式快捷键_CAD快速入门(二十三):标注样式
  13. android 可逆加密,AndroidMD5加密算法(可逆)
  14. 微信小程序tabBar不显示问题
  15. python力导向图_力导向 (Force-directed) 布局算法绘图(布点)的简单实现
  16. Deqin - 接小球游戏
  17. 爬虫技术(05)神箭手爬虫回调函数
  18. 第七届区块链全球峰会 | 谢晗剑:区块链的抽象与演进
  19. 【无机纳米材料科研制图——Visio 0309】使用任意多边形工具描边出小鼠简图
  20. 【无标题】.NET?MemoryCache如何清除全部缓存学习通http://www.bdgxy.com/

热门文章

  1. 长期使用电脑缓解肩膀脖子痛的方法
  2. Linux音频软件:Alsa、OSS和Pulseaudio、ESD、
  3. Linux下smokeping网络监控环境部署记录
  4. 【前端开发之旅】简单实用HTML制作表格
  5. 【华为OD机试真题 python】数轴上两个点集距离
  6. 常见矩阵:对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵
  7. [NOIP2007 普及组] 守望者的逃离
  8. 如何使用 TODO 注释
  9. 刺猬教育软件测试面试题
  10. ubuntu解压各种压缩文件方法