Dark mode
createPortal
สร้าง portal เพื่อ render คอมโพเนนต์ใน DOM node ที่อยู่นอก hierarchy ของ parent component เช่น สำหรับ modal หรือ tooltip
jsx
import { createPortal } from 'react-dom';
function Modal({ children }) {
return createPortal(
<div className="modal">{children}</div>,
document.getElementById('modal-root')
);
}
function App() {
return (
<div>
<Modal>Modal Content</Modal>
</div>
);
}
flushSync
บังคับให้ React อัปเดต DOM แบบ synchronous ทันที ใช้เมื่อต้องการให้การอัปเดต state หรือ DOM เสร็จสมบูรณ์ก่อนดำเนินการต่อ
jsx
import { useState } from 'react';
import { flushSync } from 'react-dom';
function MyComponent() {
const [count, setCount] = useState(0);
const handleClick = () => {
flushSync(() => {
setCount(count + 1);
});
console.log(document.getElementById('count').textContent); // Reflects updated DOM
};
return (
<div>
<div id="count">{count}</div>
<button onClick={handleClick}>Increment</button>
</div>
);
}
preconnect
(React 19) สร้างการเชื่อมต่อล่วงหน้ากับเซิร์ฟเวอร์เพื่อลด latency ในการโหลดทรัพยากร เช่น API หรือ CDN
jsx
import { preconnect } from 'react-dom';
function App() {
preconnect('https://api.example.com');
return <div>Ready to fetch from API</div>;
}
prefetchDNS
(React 19) ทำ DNS resolution ล่วงหน้าสำหรับ URL ที่อาจใช้ในอนาคต เพื่อลดเวลาในการเชื่อมต่อเมื่อมีการร้องขอจริง
jsx
import { prefetchDNS } from 'react-dom';
function App() {
prefetchDNS('https://api.example.com');
return <div>Pre-resolved DNS</div>;
}
preinit
(React 19) โหลดและเริ่มต้นทรัพยากร เช่น stylesheet หรือ script ทันทีเมื่อ render เหมาะสำหรับทรัพยากรที่สำคัญต่อการแสดงผล
jsx
import { preinit } from 'react-dom';
function App() {
preinit('https://example.com/style.css', { as: 'style' });
return <div>Stylesheet preloaded</div>;
}
preinitModule
(React 19) เริ่มต้น ES Module ล่วงหน้าเพื่อให้พร้อมใช้งานทันทีเมื่อต้องการ เหมาะสำหรับ JavaScript modules ที่สำคัญ
jsx
import { preinitModule } from 'react-dom';
function App() {
preinitModule('https://example.com/module.js');
return <div>Module preinitialized</div>;
}
preload
(React 19) โหลดทรัพยากรล่วงหน้า เช่น รูปภาพหรือไฟล์อื่น ๆ โดยไม่เริ่มต้นใช้งานทันที ช่วยลดเวลาโหลดเมื่อใช้งานจริง
jsx
import { preload } from 'react-dom';
function App() {
preload('https://example.com/image.jpg', { as: 'image' });
return <img src="https://example.com/image.jpg" alt="Preloaded" />;
}
preloadModule
(React 19) โหลด ES Module ล่วงหน้าโดยไม่เริ่มต้นใช้งาน ช่วยให้ module พร้อมเมื่อมีการ import ในภายหลัง
jsx
import { preloadModule } from 'react-dom';
function App() {
preloadModule('https://example.com/module.js');
return <div>Module preloaded</div>;
}