使用refs获取节点_闲庭信步聊前端 - 原来你是这样的Refs

28cf291fcad90a348df1884c542c5d23.png

7f326d720ddbec59b8e26103a3ae3f97.png

一、refs 的由来

什么是refs

refs是拿到真实的DOM节点和React元素实例的一种方法。在React官方文档中有提到Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素。 React是单向的数据流,父子组件的交互是通过props。修改子组件需要使用新的props来重新渲染子组件。但是在某些情况下,你需要修改数据流以外的子组件,如DOM元素或者一个React元素实例,此时就需要Refs来改变。

refs的适用场景

根据官方文档,refs在以下几种场景中适用: 1. 操作DOM元素、控制文本内容或者媒体播放 2. 操作DOM元素,触发强制动画 3. 集成第三方DOM库

我们来看下,React中有以下四种使用方式

二、refs的四种方式

1. callback ref

React 支持一种通过回调的方式设置refs,这种方式可以控制refs何时被设置和解除。创建ref属性时,你会传递一个函数,这个函数会接受DOM元素或者组件实例作为参数,使他们能够在其他地方被访问。

class TestTemp extends React.Component {
    
  componentDidMount() {
    
    this.myRef.focus();
  }
  render() {
    
    return <input ref={(element) => {
    
      this.myRef = element;
    }} />;
  }
}

React在componetDidMount或者componetDidUpdate触发前调用ref回调,并且传入对应的DOM元素,保证refs是最新的。 在下面的例子中,父组件可以获取到子组件的DOM节点

function Child(props) {
    
  return (
    <div>
      <input ref={
    props.myRef} />
    </div>
  );
}
class Parent extends React.Component {
    
 componentDidMount() {
    
    this.myElement.focus();
  }
  render() {
    
    return (
      <Child
        myRef={
    element => this.myElement = element}
      />
    );
  }
}

父组件通过props传一个回调函数给子组件,子组件可以把这个函数作为ref属性的值绑定到DOM元素上。this.myElement就是对应子组件的DOM元素(input)

2. React.createRef()

createRef()是通过创建一个ref属性,传递给渲染的DOM元素或者是组件实例


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值