React获取底层DOM节点ref属性

在React中,有时需要访问底层DOM节点来执行一些命令式操作。

class Focus extends React.Component {
	constructor(props) {
  		super(props)
	    this.handleClick = this.handleClick.bind(this)
	}
	handleClick() {
  		this.element.focus()
	}
	render() {
  		return (
		    <form>
		      <input type="text"
		       ref={element => (this.element = element)}  />
		      <button onClick={this.handleClick}>Focus</button>
		    </form>
		  )
	}
}

我们创建了一个表单,其中包含一个输入元素,并在该元素的ref属性上定义了一个回调函数。

这个回调函数会在组件挂载时被调用,元素参数表示输入的DOM实例。值得注意的是,卸载组件时也会调用这个回调,并传入null参数来释放内存。回调函数要做的就是保存元素对象的引用,方便以后使用(如在handleClick方法触发时使用)。接着我们定义了按钮元素及其事件处理器。在浏览器执行以上代码后就会显示带有输入框和按钮的表单,点击按钮后就会按预期那样聚焦输入框。

一般情况下应该尽量避免使用ref,因为它们让代码更偏向命令式,可读性与可维护性都变差了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值