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>
  )
}

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

相关推荐
&活在当下&12 小时前
uniapp 选择城市区号索引列表实现
前端·uni-app
王同学 学出来12 小时前
React实操案例(四)
开发语言·react.js·前端框架
阿珊和她的猫13 小时前
简述 React 的虚拟 DOM 机制
前端·react.js·前端框架
Easonmax13 小时前
基础入门 React Native 鸿蒙跨平台开发:简单模拟一个加油站
react native·react.js·harmonyos
梵得儿SHI13 小时前
Vue 高级特性:混入(Mixin)使用场景与问题、Vue3 组合式 API 替代方案精讲
前端·javascript·vue.js·组合式api·参数传递·mixin机制·显式调用
qq_3363139313 小时前
javaweb-HTML和CSS(2)
前端·css·html
Sapphire~13 小时前
【模板】Jinja风格 Ruby风格
前端·后端
冰暮流星13 小时前
javascript之for-of循环
开发语言·javascript·ecmascript
不绝19113 小时前
Input/屏幕/Camera/光源/碰撞检测/音频相关
开发语言·javascript·ecmascript