react中使用ref属性获取元素,并判断该元素内是否含有子元素

在react中,可以使用ref属性来获取到一个元素的引用,然后再使用ref.current来访问该元素的DOM节点,使用DOM API来判断这个元素是否含有子元素,要判断一个元素是否含有子元素,可以使用hasChildNodes(),其返回值为Boolean,下面分别使用类组件与函数组件来实现。

类组件实现代码

javascript 复制代码
import React, { Component, createRef } from 'react'

export default class App extends Component {
  constructor(props){
    super(props)
    this.divRef = createRef()
  }

  componentDidMount(){
    if (this.divRef.current) {
      if (this.divRef.current.hasChildNodes()) {
        console.log('该元素含有子元素');
      }else{
        console.log('该元素不含子元素');
      }
    }
  }

  render() {
    return (
      <div>
        <div ref={this.divRef}>
          <button>子元素</button>
        </div>
      </div>
    )
  }
}

函数组件实现代码

javascript 复制代码
import React, {useRef, useEffect} from 'react'

export default function App() {
  
  const divRef = useRef(null)

  useEffect(() => {
    if (divRef.current) {
      if (divRef.current.hasChildNodes()) {
        console.log('该元素含有子元素')
      } else {
        console.log('该元素不含子元素')
      }
    }
  })

  return (
    <div>
      <div ref={divRef}>
        <button>子元素</button>
      </div>
    </div>
  )
}

以上就是实现代码,下一篇将在此基础上实现移除子元素。

相关推荐
mapbar_front1 小时前
面试问题—我的问题问完了,你还有什么想问我的吗?
前端·面试
quweiie1 小时前
thinkphp8+layui多图上传,带删除\排序功能
前端·javascript·layui
李鸿耀2 小时前
React 项目 SVG 图标太难管?用这套自动化方案一键搞定!
前端
闲蛋小超人笑嘻嘻2 小时前
树形结构渲染 + 选择(Vue3 + ElementPlus)
前端·javascript·vue.js
叶梅树2 小时前
从零构建A股量化交易工具:基于Qlib的全栈系统指南
前端·后端·算法
巴博尔2 小时前
uniapp的IOS中首次进入,无网络问题
前端·javascript·ios·uni-app
焚 城2 小时前
UniApp 实现双语功能
javascript·vue.js·uni-app
Asthenia04123 小时前
技术复盘:从一次UAT环境CORS故障看配置冗余的危害与最佳实践
前端
csj503 小时前
前端基础之《React(1)—webpack简介》
前端·react
被巨款砸中3 小时前
前端 20 个零依赖浏览器原生 API 实战清单
前端·javascript·vue.js·web