当前位置:首页 > React

react组件如何设置dom

2026-01-24 20:32:34React

设置 DOM 的方法

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

使用 useRef Hook

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

react组件如何设置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 节点。

react组件如何设置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。

分享给朋友:

相关文章

vue轮播组件实现

vue轮播组件实现

Vue 轮播组件实现方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template…

vue实现折叠组件

vue实现折叠组件

Vue 折叠组件实现方法 基于 v-show 和事件触发 通过 v-show 控制内容的显示与隐藏,结合点击事件切换状态。 <template> <div> &…

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发…

vue 实现组件刷新

vue 实现组件刷新

实现组件刷新的方法 在Vue中,组件刷新通常指重新渲染组件或重置组件状态。以下是几种常见的实现方式: 使用v-if控制渲染 通过v-if指令可以销毁并重新创建组件: <template>…

vue实现水印组件

vue实现水印组件

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

实现vue组件

实现vue组件

创建 Vue 组件 Vue 组件可以通过单文件组件(.vue 文件)或直接在 JavaScript 中定义。以下是两种常见实现方式。 单文件组件方式 单文件组件包含模板、脚本和样式三部分,适合复杂…