当前位置:首页 > React

react组件如何设置dom

2026-01-24 20:32:34React

设置 DOM 的方法

在 React 中,直接操作 DOM 通常通过 ref 实现,以下是几种常见方式:

使用 useRef Hook

useRef 可以创建一个可变的引用对象,并将其绑定到 DOM 元素上。

import React, { useRef, useEffect } from 'react';

function MyComponent() {
  const divRef = useRef(null);

  useEffect(() => {
    if (divRef.current) {
      divRef.current.style.color = 'red';
    }
  }, []);

  return <div ref={divRef}>This is a DOM element</div>;
}

使用 createRef(类组件)

在类组件中,可以使用 createRef 来创建引用。

import React, { Component, createRef } from 'react';

class MyComponent extends Component {
  constructor(props) {
    super(props);
    this.divRef = createRef();
  }

  componentDidMount() {
    if (this.divRef.current) {
      this.divRef.current.style.backgroundColor = 'blue';
    }
  }

  render() {
    return <div ref={this.divRef}>This is a DOM element</div>;
  }
}

回调 Refs

React 支持回调形式的 ref,可以在组件挂载时获取 DOM 节点。

import React, { useEffect } from 'react';

function MyComponent() {
  let divRef = null;

  useEffect(() => {
    if (divRef) {
      divRef.style.fontWeight = 'bold';
    }
  }, []);

  return <div ref={(el) => (divRef = el)}>This is a DOM element</div>;
}

动态修改 DOM

通过 ref 结合 useEffect 或生命周期方法,可以动态修改 DOM 属性。

import React, { useRef, useEffect } from 'react';

function DynamicDOM() {
  const inputRef = useRef(null);

  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.focus();
    }
  }, []);

  return <input ref={inputRef} type="text" />;
}

使用 forwardRef 传递 Ref

如果需要在子组件中访问 DOM,可以使用 forwardRef 进行转发。

import React, { forwardRef, useRef, useEffect } from 'react';

const ChildComponent = forwardRef((props, ref) => {
  return <div ref={ref}>Child DOM</div>;
});

function ParentComponent() {
  const childRef = useRef(null);

  useEffect(() => {
    if (childRef.current) {
      childRef.current.style.border = '1px solid black';
    }
  }, []);

  return <ChildComponent ref={childRef} />;
}

注意事项

  • 避免直接修改 DOM,尽量使用 React 的状态管理(useState)控制 UI。
  • 仅在必要情况下(如聚焦输入框、测量元素尺寸等)使用 ref 操作 DOM。
  • 在函数组件中,useRef 是推荐的方式,而类组件可使用 createRef 或回调 Refs。

react组件如何设置dom

分享给朋友:

相关文章

Vue组件实现方法

Vue组件实现方法

Vue组件的基本实现方法 Vue组件是Vue.js的核心概念之一,用于构建可复用的UI模块。以下是Vue组件的几种常见实现方式: 单文件组件(SFC) 使用.vue文件格式,将模板、脚本和样式封装在…

vue实现水印组件

vue实现水印组件

Vue 水印组件实现 基础水印组件实现 创建一个基础水印组件,通过 props 接收文本、颜色、大小等参数: <template> <div class="watermark…

vue实现下拉框组件

vue实现下拉框组件

Vue 下拉框组件实现 基础实现 创建基础下拉框组件,使用v-model实现双向数据绑定: <template> <div class="dropdown">…

vue实现广告组件

vue实现广告组件

vue实现广告组件的方法 使用动态组件实现 在Vue中可以通过动态组件的方式加载广告组件,根据不同的条件展示不同的广告内容。动态组件使用<component :is="currentCompon…

react如何设置input

react如何设置input

设置 React 中的 Input 元素 在 React 中设置 input 元素可以通过多种方式实现,包括受控组件、非受控组件以及使用第三方库。以下是几种常见的方法: 受控组件方式 受控组件通过…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…