当前位置:首页 > 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 是最佳实践:

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

通过条件渲染修改类名:

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 树的其他位置:

react如何实现修改dom

import { createPortal } from 'react-dom';

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

分享给朋友:

相关文章

vue手写签名如何实现

vue手写签名如何实现

实现 Vue 手写签名的步骤 使用 canvas 实现基础签名功能 在 Vue 项目中创建一个组件,利用 HTML5 的 canvas 元素实现手写签名功能。通过监听鼠标或触摸事件来捕获用户的绘制路径…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

如何启动react

如何启动react

安装Node.js 确保系统已安装Node.js(建议使用LTS版本),可通过官网下载并安装。安装完成后,在终端运行以下命令验证版本: node -v npm -v 创建React项目 使用官方工具…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

vue如何实现增删

vue如何实现增删

使用 Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是具体实现方法: 数据定义与初始化 在 Vue 组件的 data 选项中定义数组来存储需要操作的数据项…