onRef

实现父组件获取子组件实例

class Parent extends Component{childFunc(){ if(this.child){ // 判断this.child值// this.child 指向 子组件实例// 调用子组件方法this.child.func('123') console.log('父组件调用子组件方法')}}bindChild(child){// 接收子组件实例,指向this.childthis.child = child}render(){return(<div onClick={this.childFunc}> // 点击尝试调用子组件方法// 通过onRef属性将引用子组件实例方法传给子组件<Child onRef={this.bindChild}></ChildPage></div>)}
}class Child extends Component{constructor(props){super(props)this.state = '000' if(props.onRef){// 如果接收到onRef方法,则调用该方法并传入子组件this指针// 子组件this指针被挂载到父组件this.child上props.onRef(this)      }  }func = arg => {setState(arg)}render(){return <span>{this.state}<span>}
}

ref

获取组件真实DOM

// 类组件
class NameForm extends React.Component {constructor(props) {super(props);this.handleSubmit = this.handleSubmit.bind(this);// 使用React.createRef方法来创建refthis.inputRef = React.createRef();}handleSubmit(event) {// 通过ref的current属性获取真实DOMalert(this.inputRef.current.value);event.preventDefault();}render() {return (<form onSubmit={this.handleSubmit}><label>Name:// 通过组件ref属性将组件的真实DOM引用添加到this.inputRef <input type="text" ref={this.inputRef} /> // input 为 非受控组件</label><input type="submit" value="Submit" /></form>);}
}
// 函数组件
function NameForm(props) {// 使用useRef方法来创建refconst inputRef = useRef(null);function handleSubmit(event) {// 通过ref的current属性获取真实DOMalert(inputRef.current.value);event.preventDefault();}return (<form onSubmit={handleSubmit}><label>Name:// 通过组件ref属性将组件的真实DOM引用添加到this.inputRef <input type="text" ref={inputRef} /> // input 为 非受控组件</label><input type="submit" value="Submit" /></form>);
}

ref 的值根据节点的类型而有所不同:

  • 当 ref 属性用于原生组件时, ref 接收组件的真实DOM 作为其 current 属性。
  • 当 ref 属性用于类组件时,ref 接收组件实例作为其 current 属性。
  • 函数组件没有实例,不能使用 ref 属性。

通过ref保存的数据更改时不会触发重新渲染,适合用来保存如非受控组件、计时器实例等不关联页面渲染操作的可变引用。

React: onRef 和 ref相关推荐

  1. React学习:ref调用、组件封装调用-学习笔记

    文章目录 React学习:ref调用.组件封装调用-学习笔记 ref调用-string形式 ref调用-回调形式(官方推荐) ref调用-父调子 组件封装调用demo(全选) demo1(单组件) d ...

  2. react中使用ref获取

    1.react 函数组件使用useRef获取input框中的值 import React, { useRef } from "react";export default funct ...

  3. React中使用ref

    一.如何使用ref 在React的开发模式中,通常情况下不需要.也不建议直接操作DOM原生,但是某些特殊的情况,确实需要获取到DOM进行某些操作: 管理焦点,文本选择或媒体播放: 触发强制动画: 集成 ...

  4. React 学习笔记 —— Ref Hook

    用以下三种方式创建 Ref 都可以 import React from 'react'export default function Count () {const [count ,setCount] ...

  5. React之回调ref中回调执行次数的问题

    <!DOCTYPE html> <html> <head> <meat charset="UTF-8"> <title> ...

  6. React中的ref属性的使用

    1. 字符串形式的ref import React, { Component } from 'react'export default class index extends Component {s ...

  7. 浅谈react hook ( ref)

    import React ,{useRef,useState,PureComponent} from "react"; import ReactDOM from "rea ...

  8. React(8)-组件ref引用

    目录 1.组件form 受控组件及其特点 非受控组件及其特点 模拟:简单受控组件表单 input两个方向绑定数据: 模拟:复杂(真实)受控组件表单(form里面有多种数据输入) 注意:handleCh ...

  9. React中使用 ref 和 findDomNode

    对于 React 组件来说,refs 会指向一个组件类的实例,所以可以调用该类定义的任何方法. 如果需要访问该组件的真实 DOM,可以用 ReactDOM.findDOMNode 来找到 DOM 节点 ...

最新文章

  1. 决策树--信息增益,信息增益比,Geni指数的理解
  2. JavaScript知识精简
  3. 【DBMS 数据库管理系统】OLTP 联机事务处理 与 OLAP 联机分析处理 ( 数据仓库 与 OLAP | OLAP 联机分析处理 | OLTP 与 OLAP 区别 )
  4. 下载python步骤_下载及安装Python详细步骤
  5. 【Python进阶】你真的明白NumPy中的ndarray吗?
  6. 深入理解并发/并行,阻塞/非阻塞,同步/异步
  7. java随机加法题_Java简单随机加法算式
  8. Dahlia:一个现代化的 React 框架
  9. 韦东山: 作为一个初学者,怎样学习嵌入式Linux?
  10. 推荐参考文献元数据挖掘的几篇论文
  11. 营业执照生成_电子营业执照如何获取?
  12. VS2017安装(在线、离线)
  13. 如何查看本机的内网IP
  14. 积极主动沟通说话交流的重要性和案例以及技巧
  15. 一个3D车道线检测方法PersFormer及其开源OpenLane数据集
  16. 2021 计算机 保研经历 保研经验贴 保研知识扫盲 保研时间线(合肥工业大学 软件工程 rk4/165,211 3%)
  17. 解决“A problem occurred starting process 'command ''D:\AndroidSdk\..\mips64el-linux-android-strip''的问题
  18. CRMEB知识付费系统优势及常见问题解答
  19. 为什么电脑右下角不显示“中”、“英”?
  20. ssm框架的企业固定资产管理系统

热门文章

  1. 【ARM Coresight 介绍 3 - ARM Cortex-M DWT】
  2. SF简易IDC系统V1.0免授权
  3. Django+Mysql学生选课系统/学分管理系统
  4. 零基础班第十五课 - Hive DDL详解
  5. 配置Samba服务器
  6. java调用有参方法_java 带参方法调用
  7. PS--怎么取消之前选择的工具?
  8. VBA小模板:一个奖励放回的普通抽奖用VBA怎么写?
  9. 使用Travis-CI自动部署博客
  10. reactive和ref区别