react里面如何使用document
在 React 中使用 document
React 通常推荐使用 React 的虚拟 DOM 和状态管理来操作 UI,但在某些情况下(如访问全局 DOM API、第三方库集成等),可能需要直接使用 document。以下是几种常见用法:
直接访问 DOM 元素
在 React 中,尽量避免直接操作 DOM,但可以通过 useRef 或 document.querySelector 获取元素:

import React, { useRef, useEffect } from 'react';
function MyComponent() {
const myRef = useRef(null);
useEffect(() => {
if (myRef.current) {
myRef.current.style.color = 'red';
}
}, []);
return <div ref={myRef}>Hello, World!</div>;
}
或者使用 document.querySelector(通常在 useEffect 中调用):
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
const element = document.querySelector('.my-class');
if (element) {
element.style.backgroundColor = 'blue';
}
}, []);
return <div className="my-class">This element will be styled</div>;
}
添加事件监听
可以使用 document.addEventListener 监听全局事件,但需在组件卸载时清理:

import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
const handleClick = (e) => {
console.log('Clicked:', e.target);
};
document.addEventListener('click', handleClick);
return () => {
document.removeEventListener('click', handleClick);
};
}, []);
return <div>Click anywhere to log the event</div>;
}
修改 <title> 或 <meta> 标签
可以使用 document.title 动态修改页面标题:
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
document.title = 'New Page Title';
}, []);
return <div>This component updates the page title</div>;
}
动态加载脚本或样式
可以通过 document.createElement 动态加载外部资源:
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://example.com/some-script.js';
script.async = true;
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
};
}, []);
return <div>Loading external script...</div>;
}
注意事项
- 避免直接操作 DOM,优先使用 React 的状态管理(如
useState)和虚拟 DOM。 - 在
useEffect中使用,确保 DOM 操作在组件挂载后执行。 - 清理副作用,如移除事件监听或动态加载的脚本,防止内存泄漏。
通过合理使用 document,可以在 React 中实现更灵活的 DOM 操作,但仍需遵循 React 的最佳实践。






