react中ref使用方法解析
文章目录
- 什么是ref
- string类型
- createRef创建
- 写法一:
- 写法二:
什么是ref
组件不是真实的DOM节点,在react开发中,官方也不建议直接去操作原生的DOM。组件的DOM节点是存在于内存中的一种数据结构,叫做虚拟DOM。如果需要从组件中获取真实的DOM节点,那就需要官方提供ref的属性。React提供了ref用于访问在render方法中创建的DOM元素或者是React的组件实例。
ref分为三种,我们这里先学两种。
string类型
看下面的小例子:点击按钮能够把输入框的值赋值给下面的p标签
import React, { Component } from 'react'export class App extends Component {render() {return (<div><input type='text' ref="haha" /><button onClick={this.getText}>点击</button><p ref="user">user</p></div>)}getText = () => {console.log(this.refs.haha.value)const user = this.refs.haha.valuethis.refs.user.innerHTML = user}
}export default App
这里我们就是通过ref来获取dom结点进行操作,input输入数据之后打印this.refs:
可以看到输入框的数据即为this.refs.haha.value
不过这种string类型的方法以及淘汰掉了,来看下一种
createRef创建
首先在页面最上面要进行导入,这里也导入一下PureComponent,因为下面例子会用到
import React, { createRef, PureComponent } from 'react'
写法一:
1.直接在constructor中定义this.headerRefs = createRef()
2.然后在需要使用的组件上绑定ref:
3.在按钮的点击时间中 通过current属性去获取DOM节点或者组件是实例,这里打印出来了
export class App extends PureComponent {constructor() {super()this.headerRefs = createRef()}render() {return (<div>App Page<Header ref={this.headerRefs}/><button onClick={this.getText}>点击获取</button></div>)}getText = () => {// 通过current属性去获取DOM节点或者组件是实例console.log(this.headerRefs.current.state.name)}
}class Header extends PureComponent {state = {name: 'hello react'}render() {return (<div>header Component</div>)}
}export default App
功能是实现了,但是在constructor中进行实现多少有点麻烦,下面介绍另一个写法:
写法二:
将input的内容展示给p标签
1.直接使用headerRefs = createRef()的格式去创建ref
2.在需要使用的组件上进行绑定< Header ref={this.headerRefs}/>
3.使用this.userRefs.current.innerHTML = this.inputRefs.current.value完成需求
export class App extends PureComponent {headerRefs = createRef()inputRefs = createRef()userRefs = createRef()render() {return (<div>App Page<Header ref={this.headerRefs}/><input type='text' ref={this.inputRefs} /><p ref={this.userRefs}>user</p><button onClick={this.getText}>点击获取</button></div>)}getText = () => {console.log(this.headerRefs.current.state.name)console.log(this.inputRefs)console.log(this.userRefs)this.userRefs.current.innerHTML = this.inputRefs.current.value}
}class Header extends PureComponent {state = {name: 'hello react'}render() {return (<div>header Component</div>)}
}export default App
查看效果:
react中ref使用方法解析相关推荐
- React中ref的使用方法
React中ref的使用方法 在react典型的数据流中, props 传递是父子组件交互的唯一方式:通过传递一个新的 props 值来使子组件重新 re-render ,从而达到父子组件通信.当然, ...
- react中ref、createRef、React.forwardRef分别是什么?如何使用?
一.react中ref.createRef.React.forwardRef (1)Ref 转发是一项将 ref 自动地通过组件传递到其一子组件的技巧.对于大多数应用中的组件来说,这通常不是必需的.但 ...
- [react] 在react中遍历的方法有哪些?它们有什么区别呢?
[react] 在react中遍历的方法有哪些?它们有什么区别呢? 有React.Children.map和 React.Children.forEach这两个方法,他们的参数都是在组件中接受prop ...
- React中ref的使用方法和使用场景(详解)
摘要 不管在Vue中还是React,如果我们想使用一个元素的DOM,不需要通过JS中操纵DOM的方法,它们提供了一个专属的API就是ref. 而Vue中的ref可能比较简单,这一篇主要讲一下如何在Re ...
- react中ref的使用
在react中获取真实dom的时候就需要用到ref属性,具体使用如下 var MyComponent = React.createClass({handleClick: function() {con ...
- react中ref已废弃,请使用React.createRef()
在项目开发过程中难免会从操作dom,在react中获取dom的方式 (1)ref(已废弃) //绑定ref <input ref="getInput"/> //获取do ...
- SqlHelper类中的ExecuteNonQuery方法解析
在SqlHelper类(windows原)中,ExecuteNonQuery方法通常用于执行数据库更新与返回存储过程的输出参数,它有九个重载,接下来我们来一一解析. 首先介绍一下此方法可以输入哪些参数 ...
- React中ref的理解
(1)React的ref有3种用法: 字符串 dom节点上使用,通过this.refs[refName]来引用真实的dom节点 <input ref="inputRef" / ...
- React 中ref 的使用(类组件和函数组件)以及forwardRef 与 useImperativeHandle 详解
前言 在一个父组件中,我们想要获取到其中的节点元素或者子组件实例,从而直接调用其上面的方法.Class 类组件和函数组件是两种不同的写法. 1. Class 组件中使用ref 在 React 的 Cl ...
最新文章
- 查找Windows文件来历的好方法
- 李开复对谈张亚勤:科学家创业需要企业家伙伴,开放心态看待元宇宙 | MEET2022...
- linux下载tomcat7命令,linux下安装tomcat7.0
- nginx ngx_http_proxy_module(反向代理)
- Product user profile information 没有导入
- java集合框架的选用 若是数据量很大,0421测试题
- JavaScript之jQuery
- 基于java自行车租赁管理系统
- PES、PS、TS详解
- rgb sw 线主板接口在哪_华硕ROG STRIX LC 360 RGB一体式水冷:与ROG主板更配
- 阿里云大数据助理工程师认证考试考什么内容?
- 为什么有必要开发一个APP?
- FPGA学习02——Quartus01安装教程.
- 利用AUL工具恢复oracle dbf文件中的数据
- JavaWeb仓库管理系统,表弟的棒棒糖到底谁拿了
- 数字监控系统的工作原理图
- 【Telerik和Kendo UI组件】上海道宁与progress为您提供Web、移动和桌面构建功能更丰富的现代体验
- 【转】 SCM工具对比分析
- 扩展 EdgeX Foundry 混合开发环境
- 说说,博客,贴吧评论设计问题