当前位置:首页 > 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 进行转发。

react组件如何设置dom

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。

分享给朋友:

相关文章

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

组件elementui

组件elementui

ElementUI 简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),适合快速构建企业级中后台产品。…

vue表格组件实现

vue表格组件实现

Vue表格组件实现 基础表格实现 使用el-table组件实现基础表格功能。安装Element UI后,引入el-table和el-table-column组件。 <template>…

vue实现组件切换

vue实现组件切换

Vue 组件切换的实现方法 在 Vue 中实现组件切换有多种方式,以下是几种常见的方法: 动态组件 使用 Vue 内置的 <component> 元素和 is 属性可以动态切换组件:…

vue实现高阶组件

vue实现高阶组件

Vue 高阶组件实现方法 高阶组件(HOC)是一种复用组件逻辑的模式,通过函数包裹组件并返回新组件实现。Vue 中可通过以下方式实现: 使用 render 函数 通过函数接收组件选项并返回新组件选项…

vue组件实现原理

vue组件实现原理

Vue 组件实现原理 Vue 组件的核心实现基于以下机制: 组件注册与模板解析 Vue 组件通过 Vue.component() 或单文件组件(.vue 文件)注册。模板会被编译成渲染函数,最终生成…