React中ref的用法
在React数据流中,父子组件唯一的通信方式是通过props属性;那么如果有些场景需要获取某一个真实的DOM元素来交互,这时候就要用到React的refs属性。
1、可以给DOM元素添加ref属性
class TestApp extends React.Component{
constructor(props){
super(props);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e){
e.preventDefault();
console.log(`姓名:${this.nameInput.value}`);
console.log(`学校:${ReactDOM.findDOMNode(this.refs.schoolInput).value}`);
}
render(){
return(
<form>
<input type="text" ref={(nameInput) => {nameInput.focus();this.nameInput = nameInput}}/><br></br>
<input type="text" ref="schoolInput"/><br></br>
<button onClick={this.handleSubmit}>提交</button>
</form>
)
};
}
上面例子实现了两种方式,通过ref来获取真实DOM元素。因为第二个文本框本身为真实dom元素,也可以通过this.refs.schoolInput.value来获取值。
ref可以设置字符串,也可以设置回调函数(推荐)。
- 组件被挂载后,回调函数立即执行,回调函数的参数为该组件的具体事例。
组件被卸载或者原有的ref属性本身发生变化时
,回调也会被立即执行,此时回调函数参数为null
,以确保内存泄露。
React中ref的用法的更多相关文章
- React中ref的使用方法
React中ref的使用方法 在react典型的数据流中,props传递是父子组件交互的唯一方式:通过传递一个新的props值来使子组件重新re-render,从而达到父子组件通信.当然,就像reac ...
- React中Ref 的使用 React-踩坑记_05
React中Ref 的使用 React v16.6.3 在典型的React数据流中,props是父组件与其子组件交互的唯一方式.要修改子项,请使用new props 重新呈现它.但是,在某些情况下,需 ...
- React Native中ref的用法(通过组件的ref属性,来获取真实的组件)
ref是什么? ref是组件的特殊属性,组件被渲染后,指向组件的一个引用.可以通过组件的ref属性,来获取真实的组件.因为,组件并不是真正的DOM节点,而是存在于内存中的一种数据结构,称为虚拟的DOM ...
- React中ref的三种用法 可以用来获取表单中的值 这一种类似document.getXXId的方式
import React, { Component } from "react" export default class MyInput extends Component { ...
- React之ref详细用法
在react典型的数据流中,props传递是父子组件交互的唯一方式:通过传递一个新的props值来使子组件重新re-render,从而达到父子组件通信.当然,就像react官网所描述的一样,在reac ...
- React Native ref高级用法&&setNativeProps使用
ref属性不只是string ref属性不仅接受string类型的参数,而且它还接受一个function作为 callback.这一特性让开发者对ref的使用更加灵活. render() { retu ...
- react.js 从零开始(五)React 中事件的用法
事件系统 虚拟事件对象 事件处理器将会传入虚拟事件对象的实例,一个对浏览器本地事件的跨浏览器封装.它有和浏览器本地事件相同的属性和方法,包括 stopPropagation() 和 prevent ...
- Vue.js中ref ($refs)用法举例总结
原文地址:http://www.cnblogs.com/xueweijie/p/6907676.html <div id="app"> <input type=& ...
- Vue中 $ref 的用法
说明:vm.$refs 一个对象,持有已注册过 ref 的所有子组件(或HTML元素)使用:在 HTML元素 中,添加ref属性,然后在JS中通过vm.$refs.属性来获取注意:如果获取的是一个子组 ...
随机推荐
- hdoj 4526 威威猫系列故事——拼车记
威威猫系列故事——拼车记 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- python-wechatAutoReword
python-微信自动回复功能,基于itchat 2017.9.6 实现群@自动回复 #! /usr/bin/env python3.5.2 # coding="utf-8" im ...
- jq实现千分位的转换
一.千分位转换位整数 var sum = '2,034,300';var x = sum.split(",");var plan_sum = parseFloat(x.join(& ...
- 折腾kali linux2.0
偶然的机会了解到了kali linux这个用于渗透测试的linux发行版,于是就从官网下了iso,但是制作启动盘老出错.网上查了下说在linux下用dd命令特别简单,于是转到ubuntu下制作启动盘, ...
- jquery 获取绑定事件
在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: 1 $.data(domObj,'events');//或者$('selector').data('events') 而从1. ...
- Psql 安装问题
在openerp安装过程中报错: psql: could not connect to server: No such file or directory Is the server running ...
- [wifi]wifi模块操作
问题: 应用程序通过什么样的接口去修改wifi的账号和密码 应用程序如何控制wifi模块
- 小贝_redis 高级应用-事务
redis高级应用-事务 一.redis的事务 二.redis实现事务 三.redis事务问题 一.redis的事务 事务提供了一种"将多个命令打包,然后一次性.按顺序地运行"的机 ...
- Go语言入门系列2 基本语法
get download and install packages and dependencies install = compile and install packages and depend ...
- node.js发http请求
标准库中默认的HTTP模块 const https = require('https'); https.get('https://api.nasa.gov/planetary/apod?api_key ...