当前位置:首页 > React

react如何实现修改dom

2026-01-24 23:10:03React

直接操作 DOM(不推荐)

在 React 中直接操作 DOM 通常是不推荐的做法,因为这违背了 React 的设计原则。React 通过虚拟 DOM 来高效更新真实 DOM,直接操作可能导致状态不一致。

使用 ref 获取 DOM 节点:

import { useRef } from 'react';

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

  const handleClick = () => {
    myRef.current.style.color = 'red';
  };

  return (
    <div>
      <div ref={myRef}>This is a DOM element</div>
      <button onClick={handleClick}>Change Color</button>
    </div>
  );
}

使用 React 状态管理(推荐)

通过改变状态来让 React 自动更新 DOM 是最佳实践:

react如何实现修改dom

import { useState } from 'react';

function MyComponent() {
  const [color, setColor] = useState('black');

  const handleClick = () => {
    setColor('red');
  };

  return (
    <div>
      <div style={{ color }}>This is a DOM element</div>
      <button onClick={handleClick}>Change Color</button>
    </div>
  );
}

使用 useEffect 处理副作用

当需要在 DOM 更新后执行操作时:

import { useEffect, useRef } from 'react';

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

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

  return <input ref={myRef} />;
}

动态修改 className

通过条件渲染修改类名:

react如何实现修改dom

function MyComponent() {
  const [isActive, setIsActive] = useState(false);

  return (
    <div className={isActive ? 'active' : ''}>
      Content
      <button onClick={() => setIsActive(!isActive)}>Toggle</button>
    </div>
  );
}

使用 dangerouslySetInnerHTML

在极少数需要设置原始 HTML 的情况下:

function MyComponent() {
  const htmlContent = '<span>Raw HTML</span>';

  return <div dangerouslySetInnerHTML={{ __html: htmlContent }} />;
}

使用 Portal 渲染到其他 DOM 节点

将内容渲染到 DOM 树的其他位置:

import { createPortal } from 'react-dom';

function Modal({ children }) {
  return createPortal(
    <div className="modal">{children}</div>,
    document.getElementById('modal-root')
  );
}

分享给朋友:

相关文章

vue如何实现分离

vue如何实现分离

Vue 实现组件分离的方法 Vue 可以通过多种方式实现组件分离,提升代码的可维护性和复用性。以下是几种常见的方法: 单文件组件 (SFC) Vue 的单文件组件(.vue 文件)将模板、脚本和样式…

如何实现vue表格联动

如何实现vue表格联动

实现 Vue 表格联动的方法 数据绑定与响应式更新 通过 Vue 的响应式特性,将多个表格的数据绑定到同一个数据源或计算属性。当一个表格的数据发生变化时,另一个表格会自动更新。例如: data()…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

vue如何实现计算

vue如何实现计算

Vue 计算属性的实现方法 在 Vue 中,计算属性(computed properties)是一种基于响应式依赖进行缓存的属性,适用于处理复杂逻辑或依赖其他数据属性的场景。以下是实现计算属性的几种方…

如何升级react native

如何升级react native

升级 React Native 的步骤 检查当前版本 运行以下命令查看当前项目的 React Native 版本: react-native --version 更新 React Native CL…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…