react如何实现修改dom
修改 DOM 的方法
在 React 中直接操作 DOM 是不推荐的,但某些场景下(如集成第三方库、手动管理焦点等)可能需要直接修改 DOM。以下是几种实现方式:

使用 ref 直接访问 DOM 节点
通过 useRef(函数组件)或 createRef(类组件)创建引用,绑定到 DOM 元素后直接修改其属性或内容。

import React, { useRef, useEffect } from 'react';
function Example() {
const divRef = useRef(null);
useEffect(() => {
if (divRef.current) {
divRef.current.style.color = 'red'; // 修改样式
divRef.current.textContent = '修改后的内容'; // 修改文本
}
}, []);
return <div ref={divRef}>初始内容</div>;
}
使用 dangerouslySetInnerHTML
如果需要直接设置 HTML 内容(需注意 XSS 风险),可以使用此属性。
function Example() {
const html = '<span style="color: blue;">动态HTML</span>';
return <div dangerouslySetInnerHTML={{ __html: html }} />;
}
通过 document API 访问 DOM
在极端情况下,可以通过传统 DOM API 直接操作,但需确保组件已挂载。
useEffect(() => {
const element = document.getElementById('custom-element');
if (element) {
element.classList.add('active');
}
}, []);
最佳实践建议
- 优先使用 React 状态管理:通过
useState或useReducer驱动 UI 更新,而非直接操作 DOM。 - 限制 DOM 操作范围:仅在必要时(如动画库集成、测量元素尺寸)使用
ref。 - 避免频繁操作:直接 DOM 操作会绕过 React 的虚拟 DOM 优化,可能影响性能。
注意事项
- 直接修改 DOM 可能导致 React 的虚拟 DOM 与实际 DOM 不同步,引发渲染问题。
- 在组件卸载时需清理 DOM 修改(如移除事件监听器),防止内存泄漏。






