react中ref的理解与简单运用

1、ref概念

在React中,ref是一种用于获取对特定元素或组件实例的引用的方式。 它通常用于访问特定元素,如输入框或自定义组件的实例,或者访问组件上的方法以调用该方法与组件进行交互。

一般情况下,ref通过调用React.createRef()创建,然后将其分配给渲染的元素或组件的ref属性。

需要注意的是,ref只能用于Class组件和部分原生组件,如<input><div>等。无状态函数组件不能使用ref。另外,ref在函数式组件中可以使用React.forwardRef来实现。

2、 通过点击按钮实现antd的Modal模态框位置跟随按钮位置进行变化


通过获取到的绑定元素的位置信息,来设置模板框的位置

import React, { Component } from 'react';
import { Modal, Button } from 'antd';

export default class Cp extends Component {
  constructor(props) {
    super(props);
    this.uploadListContainerRef = React.createRef(); // 创建ref
    this.state = {
      modalInfo: {},
      visible: false
    }
  }

  showVisible= ()=>{
    const { current: uploadListContainer } = this.uploadListContainerRef;
    // 获取当前绑定元素的位置信息
    console.log(uploadListContainer.getBoundingClientRect(), '获取当前绑定元素的位置信息')
    this.setState({
      visible: true,
      modalInfo: uploadListContainer.getBoundingClientRect() || {}
    })
  }

  cancelVisible = ()=>{
    this.setState({
      visible: false,
      modalInfo: {}
    })
  }

  render() {
    const {modalInfo, visible} = this.state
    return (
      <div>
        <div ref={this.uploadListContainerRef} id='uploadListContainer' className='upload-list-container'>
          <Button onClick={this.showVisible}>点击唤起弹窗</Button>
        </div>
        <Modal title={'我的弹窗'} mask={false} visible={visible} footer={null} width={800} 
          style={{marginTop: modalInfo.y, marginLeft: modalInfo.x}} onCancel={this.cancelVisible}>  
          我的弹窗
        </Modal>
      </div>
    );
  }
}

 3、ref的优缺点

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值