ರಿಯಾಕ್ಟ್ನ createPortal APIಗೆ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ. ಪೋರ್ಟಲ್ ರಚನೆ, ಈವೆಂಟ್ ನಿರ್ವಹಣೆ ತಂತ್ರಗಳು ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವ ಹಾಗೂ ಪ್ರವೇಶಿಸಬಹುದಾದ UIಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸುಧಾರಿತ ಬಳಕೆಯ ಪ್ರಕರಣಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
ರಿಯಾಕ್ಟ್ createPortal: ಪೋರ್ಟಲ್ ರಚನೆ ಮತ್ತು ಈವೆಂಟ್ ನಿರ್ವಹಣೆಯಲ್ಲಿ ಪಾಂಡಿತ್ಯ
ರಿಯಾಕ್ಟ್ನೊಂದಿಗೆ ಆಧುನಿಕ ವೆಬ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ, ಆಧಾರವಾಗಿರುವ ಡಾಕ್ಯುಮೆಂಟ್ ರಚನೆಯೊಂದಿಗೆ ಮನಬಂದಂತೆ ಸಂಯೋಜಿಸುವ ಯೂಸರ್ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು (UI) ರಚಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ರಿಯಾಕ್ಟ್ನ ಕಾಂಪೊನೆಂಟ್ ಮಾಡೆಲ್ ವರ್ಚುವಲ್ DOM ಅನ್ನು ನಿರ್ವಹಿಸುವಲ್ಲಿ ಉತ್ತಮವಾಗಿದ್ದರೂ, ಕೆಲವೊಮ್ಮೆ ನಾವು ಸಾಮಾನ್ಯ ಕಾಂಪೊನೆಂಟ್ ಕ್ರಮಾನುಗತದ ಹೊರಗೆ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇಲ್ಲಿಯೇ createPortal ಬರುತ್ತದೆ. ಈ ಮಾರ್ಗದರ್ಶಿ createPortal ಅನ್ನು ಆಳವಾಗಿ ಅನ್ವೇಷಿಸುತ್ತದೆ, ಅದರ ಉದ್ದೇಶ, ಬಳಕೆ, ಮತ್ತು ಈವೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹಾಗೂ ಸಂಕೀರ್ಣ UI ಎಲಿಮೆಂಟ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಸುಧಾರಿತ ತಂತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಾವು ಅಂತರರಾಷ್ಟ್ರೀಕರಣದ ಪರಿಗಣನೆಗಳು, ಪ್ರವೇಶಸಾಧ್ಯತೆಯ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು, ಮತ್ತು ತಪ್ಪಿಸಬೇಕಾದ ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳನ್ನು ಚರ್ಚಿಸುತ್ತೇವೆ.
ರಿಯಾಕ್ಟ್ createPortal ಎಂದರೇನು?
createPortal ಒಂದು ರಿಯಾಕ್ಟ್ API ಆಗಿದ್ದು, ಇದು ಪೇರೆಂಟ್ ಕಾಂಪೊನೆಂಟ್ನ ಕ್ರಮಾನುಗತದ ಹೊರಗೆ, DOM ಟ್ರೀಯ ಬೇರೆ ಭಾಗಕ್ಕೆ ರಿಯಾಕ್ಟ್ ಕಾಂಪೊನೆಂಟ್ನ ಚಿಲ್ಡ್ರನ್ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಮೋಡಲ್ಗಳು, ಟೂಲ್ಟಿಪ್ಗಳು, ಡ್ರಾಪ್ಡೌನ್ಗಳು, ಮತ್ತು ಓವರ್ಲೇಗಳಂತಹ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ರಚಿಸಲು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ, ಇವುಗಳನ್ನು ಡಾಕ್ಯುಮೆಂಟ್ನ ಉನ್ನತ ಮಟ್ಟದಲ್ಲಿ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಕಂಟೇನರ್ನಲ್ಲಿ ಇರಿಸಬೇಕಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡುವ ಕಾಂಪೊನೆಂಟ್ ರಿಯಾಕ್ಟ್ ಕಾಂಪೊನೆಂಟ್ ಟ್ರೀಯಲ್ಲಿ ಎಲ್ಲೇ ಇರಲಿ.
createPortal ಇಲ್ಲದೆ, ಇದನ್ನು ಸಾಧಿಸಲು ನೇರವಾಗಿ DOM ಅನ್ನು ಮ್ಯಾನಿಪುಲೇಟ್ ಮಾಡುವುದು ಅಥವಾ CSS ಅಬ್ಸೊಲ್ಯೂಟ್ ಪೊಸಿಷನಿಂಗ್ ಬಳಸುವುದು ಮುಂತಾದ ಸಂಕೀರ್ಣ ಪರ್ಯಾಯ ಮಾರ್ಗಗಳು ಬೇಕಾಗುತ್ತವೆ, ಇದು ಸ್ಟ್ಯಾಕಿಂಗ್ ಕಾಂಟೆಕ್ಸ್ಟ್ಗಳು, z-index ಸಂಘರ್ಷಗಳು ಮತ್ತು ಪ್ರವೇಶಸಾಧ್ಯತೆಯೊಂದಿಗೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
createPortal ಅನ್ನು ಏಕೆ ಬಳಸಬೇಕು?
ನಿಮ್ಮ ರಿಯಾಕ್ಟ್ ಬತ್ತಳಿಕೆಯಲ್ಲಿ createPortal ಒಂದು ಮೌಲ್ಯಯುತ ಸಾಧನವಾಗಲು ಪ್ರಮುಖ ಕಾರಣಗಳು ಇಲ್ಲಿವೆ:
- ಸುಧಾರಿತ DOM ರಚನೆ: DOM ನಲ್ಲಿ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ಆಳವಾಗಿ ನೆಸ್ಟ್ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸುತ್ತದೆ, ಇದು ಸ್ವಚ್ಛ ಮತ್ತು ಹೆಚ್ಚು ನಿರ್ವಹಿಸಬಹುದಾದ ರಚನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಅನೇಕ ಸಂವಾದಾತ್ಮಕ ಎಲಿಮೆಂಟ್ಗಳಿರುವ ಸಂಕೀರ್ಣ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಇದು ವಿಶೇಷವಾಗಿ ಮುಖ್ಯವಾಗಿದೆ.
- ಸರಳೀಕೃತ ಸ್ಟೈಲಿಂಗ್: ಸಂಕೀರ್ಣ CSS ತಂತ್ರಗಳನ್ನು ಅವಲಂಬಿಸದೆ ವ್ಯೂಪೋರ್ಟ್ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಕಂಟೇನರ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಇರಿಸಿ. ಇದು ಸ್ಟೈಲಿಂಗ್ ಮತ್ತು ಲೇಔಟ್ ಅನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಇತರ ವಿಷಯದ ಮೇಲೆ ಓವರ್ಲೇ ಆಗಬೇಕಾದ ಎಲಿಮೆಂಟ್ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ.
- ವರ್ಧಿತ ಪ್ರವೇಶಸಾಧ್ಯತೆ: ಕಾಂಪೊನೆಂಟ್ ಕ್ರಮಾನುಗತದಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ಫೋಕಸ್ ಮತ್ತು ಕೀಬೋರ್ಡ್ ನ್ಯಾವಿಗೇಷನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುವ ಮೂಲಕ ಪ್ರವೇಶಿಸಬಹುದಾದ UI ಗಳನ್ನು ರಚಿಸಲು ಅನುಕೂಲ ಮಾಡಿಕೊಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಮೋಡಲ್ ವಿಂಡೋದೊಳಗೆ ಫೋಕಸ್ ಉಳಿಯುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು.
- ಉತ್ತಮ ಈವೆಂಟ್ ನಿರ್ವಹಣೆ: ಪೋರ್ಟಲ್ನ ವಿಷಯದಿಂದ ರಿಯಾಕ್ಟ್ ಟ್ರೀಗೆ ಈವೆಂಟ್ಗಳು ಸರಿಯಾಗಿ ಪ್ರಸಾರವಾಗಲು ಅನುಮತಿಸುತ್ತದೆ, ಪೇರೆಂಟ್ ಕಾಂಪೊನೆಂಟ್ಗಳಿಗೆ ಲಗತ್ತಿಸಲಾದ ಈವೆಂಟ್ ಲಿಸನರ್ಗಳು ಇನ್ನೂ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
createPortal ನ ಮೂಲಭೂತ ಬಳಕೆ
createPortal API ಎರಡು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ:
- ನೀವು ರೆಂಡರ್ ಮಾಡಲು ಬಯಸುವ ರಿಯಾಕ್ಟ್ ನೋಡ್ (JSX).
- ನೀವು ನೋಡ್ ಅನ್ನು ರೆಂಡರ್ ಮಾಡಲು ಬಯಸುವ DOM ಎಲಿಮೆಂಟ್.
createPortalಬಳಸುವ ಕಾಂಪೊನೆಂಟ್ ಮೌಂಟ್ ಆಗುವ ಮೊದಲು ಈ DOM ಎಲಿಮೆಂಟ್ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದು ಸೂಕ್ತ.
ಇಲ್ಲೊಂದು ಸರಳ ಉದಾಹರಣೆ ಇದೆ:
ಉದಾಹರಣೆ: ಮೋಡಲ್ ಅನ್ನು ರೆಂಡರ್ ಮಾಡುವುದು
ನೀವು body ಎಲಿಮೆಂಟ್ನ ಕೊನೆಯಲ್ಲಿ ರೆಂಡರ್ ಮಾಡಲು ಬಯಸುವ ಮೋಡಲ್ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ನೀವು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಭಾವಿಸೋಣ.
import React from 'react';
import ReactDOM from 'react-dom';
function Modal({ children, isOpen, onClose }) {
if (!isOpen) return null;
const modalRoot = document.getElementById('modal-root'); // Assumes you have a <div id="modal-root"></div> in your HTML
if (!modalRoot) {
console.error('Modal root element not found!');
return null;
}
return ReactDOM.createPortal(
<div className="modal-overlay" onClick={onClose}>
<div className="modal-content" onClick={(e) => e.stopPropagation()}>
{children}
</div>
</div>,
modalRoot
);
}
export default Modal;
ವಿವರಣೆ:
- ನಾವು
ReactDOMಅನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡುತ್ತೇವೆ ಏಕೆಂದರೆcreatePortalಎಂಬುದುReactDOMಆಬ್ಜೆಕ್ಟ್ನ ಒಂದು ಮೆಥಡ್ ಆಗಿದೆ. - ನಿಮ್ಮ HTML ನಲ್ಲಿ
modal-rootID ಯೊಂದಿಗೆ DOM ಎಲಿಮೆಂಟ್ ಇದೆ ಎಂದು ನಾವು ಭಾವಿಸುತ್ತೇವೆ. ಇಲ್ಲಿಯೇ ಮೋಡಲ್ ರೆಂಡರ್ ಆಗುತ್ತದೆ. ಈ ಎಲಿಮೆಂಟ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನಿಮ್ಮindex.htmlಫೈಲ್ನಲ್ಲಿ ಕ್ಲೋಸಿಂಗ್</body>ಟ್ಯಾಗ್ನ ಮೊದಲು<div id="modal-root"></div>ಅನ್ನು ಸೇರಿಸುವುದು ಒಂದು ಸಾಮಾನ್ಯ ಅಭ್ಯಾಸ. - ಮೋಡಲ್ನ JSX ಅನ್ನು
modalRootಎಲಿಮೆಂಟ್ಗೆ ರೆಂಡರ್ ಮಾಡಲು ನಾವುReactDOM.createPortalಅನ್ನು ಬಳಸುತ್ತೇವೆ. - ಮೋಡಲ್ ಕಂಟೆಂಟ್ನಲ್ಲಿರುವ
onClickಈವೆಂಟ್, ಓವರ್ಲೇ ಮೇಲಿರುವonCloseಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಟ್ರಿಗರ್ ಮಾಡುವುದನ್ನು ತಡೆಯಲು ನಾವುe.stopPropagation()ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಇದು ಮೋಡಲ್ ಒಳಗೆ ಕ್ಲಿಕ್ ಮಾಡಿದರೆ ಅದು ಮುಚ್ಚುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಬಳಕೆ:
import React, { useState } from 'react';
import Modal from './Modal';
function App() {
const [isModalOpen, setIsModalOpen] = useState(false);
return (
<div>
<button onClick={() => setIsModalOpen(true)}>Open Modal</button>
<Modal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)}>
<h2>Modal Content</h2>
<p>This is the content of the modal.</p>
<button onClick={() => setIsModalOpen(false)}>Close</button>
</Modal>
</div>
);
}
export default App;
ಈ ಉದಾಹರಣೆಯು ಸಾಮಾನ್ಯ ಕಾಂಪೊನೆಂಟ್ ಕ್ರಮಾನುಗತದ ಹೊರಗೆ ಮೋಡಲ್ ಅನ್ನು ಹೇಗೆ ರೆಂಡರ್ ಮಾಡುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ, ಪುಟದಲ್ಲಿ ಅದನ್ನು ಅಬ್ಸೊಲ್ಯೂಟ್ ಆಗಿ ಇರಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ರೀತಿ createPortal ಅನ್ನು ಬಳಸುವುದು ಸ್ಟ್ಯಾಕಿಂಗ್ ಕಾಂಟೆಕ್ಸ್ಟ್ಗಳ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಾದ್ಯಂತ ಸ್ಥಿರವಾದ ಮೋಡಲ್ ಸ್ಟೈಲಿಂಗ್ ಅನ್ನು ಸುಲಭವಾಗಿ ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
createPortal ನೊಂದಿಗೆ ಈವೆಂಟ್ ನಿರ್ವಹಣೆ
createPortal ನ ಪ್ರಮುಖ ಪ್ರಯೋಜನಗಳಲ್ಲಿ ಒಂದು ಎಂದರೆ ಅದು ರಿಯಾಕ್ಟ್ನ ಸಾಮಾನ್ಯ ಈವೆಂಟ್ ಬಬ್ಲಿಂಗ್ ನಡವಳಿಕೆಯನ್ನು ಸಂರಕ್ಷಿಸುತ್ತದೆ. ಇದರರ್ಥ ಪೋರ್ಟಲ್ನ ವಿಷಯದೊಳಗೆ ಹುಟ್ಟುವ ಈವೆಂಟ್ಗಳು ಇನ್ನೂ ರಿಯಾಕ್ಟ್ ಕಾಂಪೊನೆಂಟ್ ಟ್ರೀಯ ಮೂಲಕ ಪ್ರಸಾರವಾಗುತ್ತವೆ, ಇದು ಪೇರೆಂಟ್ ಕಾಂಪೊನೆಂಟ್ಗಳು ಅವುಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಆದಾಗ್ಯೂ, ಪೋರ್ಟಲ್ ಗಡಿಯನ್ನು ದಾಟಿದಾಗ ಈವೆಂಟ್ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ.
ಉದಾಹರಣೆ: ಪೋರ್ಟಲ್ನ ಹೊರಗೆ ಈವೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
import React, { useState, useRef, useEffect } from 'react';
import ReactDOM from 'react-dom';
function OutsideClickExample() {
const [isOpen, setIsOpen] = useState(false);
const dropdownRef = useRef(null);
const portalRoot = document.getElementById('portal-root');
useEffect(() => {
function handleClickOutside(event) {
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
setIsOpen(false);
}
}
document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, [dropdownRef]);
return (
<div>
<button onClick={() => setIsOpen(!isOpen)}>Toggle Dropdown</button>
{isOpen && portalRoot && ReactDOM.createPortal(
<div ref={dropdownRef} style={{ position: 'absolute', top: '50px', left: '0', border: '1px solid black', padding: '10px', backgroundColor: 'white' }}>
Dropdown Content
</div>,
portalRoot
)}
</div>
);
}
export default OutsideClickExample;
ವಿವರಣೆ:
- ಪೋರ್ಟಲ್ನೊಳಗೆ ರೆಂಡರ್ ಮಾಡಲಾದ ಡ್ರಾಪ್ಡೌನ್ ಎಲಿಮೆಂಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನಾವು
refಅನ್ನು ಬಳಸುತ್ತೇವೆ. - ಡ್ರಾಪ್ಡೌನ್ನ ಹೊರಗಿನ ಕ್ಲಿಕ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ನಾವು
documentಗೆmousedownಈವೆಂಟ್ ಲಿಸನರ್ ಅನ್ನು ಲಗತ್ತಿಸುತ್ತೇವೆ. - ಈವೆಂಟ್ ಲಿಸನರ್ ಒಳಗೆ,
dropdownRef.current.contains(event.target)ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಲಿಕ್ ಡ್ರಾಪ್ಡೌನ್ನ ಹೊರಗೆ ಸಂಭವಿಸಿದೆಯೇ ಎಂದು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ. - ಕ್ಲಿಕ್ ಡ್ರಾಪ್ಡೌನ್ನ ಹೊರಗೆ ಸಂಭವಿಸಿದಲ್ಲಿ, ನಾವು
isOpenಅನ್ನುfalseಗೆ ಹೊಂದಿಸುವ ಮೂಲಕ ಅದನ್ನು ಮುಚ್ಚುತ್ತೇವೆ.
ಈ ಉದಾಹರಣೆಯು ಪೋರ್ಟಲ್ನ ವಿಷಯದ ಹೊರಗೆ ಸಂಭವಿಸುವ ಈವೆಂಟ್ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ, ಸುತ್ತಮುತ್ತಲಿನ ಡಾಕ್ಯುಮೆಂಟ್ನಲ್ಲಿ ಬಳಕೆದಾರರ ಕ್ರಿಯೆಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುವ ಸಂವಾದಾತ್ಮಕ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಸುಧಾರಿತ ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
createPortal ಕೇವಲ ಸರಳ ಮೋಡಲ್ಗಳು ಮತ್ತು ಟೂಲ್ಟಿಪ್ಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ. ಇದನ್ನು ವಿವಿಧ ಸುಧಾರಿತ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಬಳಸಬಹುದು, ಅವುಗಳೆಂದರೆ:
- ಸಂದರ್ಭ ಮೆನುಗಳು: ಬಲ-ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಮೌಸ್ ಕರ್ಸರ್ ಬಳಿ ಸಂದರ್ಭ ಮೆನುಗಳನ್ನು ಡೈನಾಮಿಕ್ ಆಗಿ ರೆಂಡರ್ ಮಾಡಿ.
- ಅಧಿಸೂಚನೆಗಳು: ಕಾಂಪೊನೆಂಟ್ ಕ್ರಮಾನುಗತವನ್ನು ಲೆಕ್ಕಿಸದೆ ಪರದೆಯ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ.
- ಕಸ್ಟಮ್ ಪಾಪ್ಓವರ್ಗಳು: ಸುಧಾರಿತ ಪೊಸಿಷನಿಂಗ್ ಮತ್ತು ಸ್ಟೈಲಿಂಗ್ನೊಂದಿಗೆ ಕಸ್ಟಮ್ ಪಾಪ್ಓವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ರಚಿಸಿ.
- ಮೂರನೇ-ಪಕ್ಷದ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ಏಕೀಕರಣ: ನಿರ್ದಿಷ್ಟ DOM ರಚನೆಗಳ ಅಗತ್ಯವಿರುವ ಮೂರನೇ-ಪಕ್ಷದ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ರಿಯಾಕ್ಟ್ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ಸಂಯೋಜಿಸಲು
createPortalಬಳಸಿ.
ಉದಾಹರಣೆ: ಸಂದರ್ಭ ಮೆನುವನ್ನು ರಚಿಸುವುದು
import React, { useState, useRef, useEffect } from 'react';
import ReactDOM from 'react-dom';
function ContextMenuExample() {
const [contextMenu, setContextMenu] = useState(null);
const menuRef = useRef(null);
useEffect(() => {
function handleClickOutside(event) {
if (menuRef.current && !menuRef.current.contains(event.target)) {
setContextMenu(null);
}
}
document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
}, [menuRef]);
const handleContextMenu = (event) => {
event.preventDefault();
setContextMenu({
x: event.clientX,
y: event.clientY,
});
};
const portalRoot = document.getElementById('portal-root');
return (
<div onContextMenu={handleContextMenu} style={{ border: '1px solid black', padding: '20px' }}>
Right-click here to open context menu
{contextMenu && portalRoot && ReactDOM.createPortal(
<div
ref={menuRef}
style={{
position: 'absolute',
top: contextMenu.y,
left: contextMenu.x,
border: '1px solid black',
padding: '10px',
backgroundColor: 'white',
}}
>
<ul>
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
</ul>
</div>,
portalRoot
)}
</div>
);
}
export default ContextMenuExample;
ವಿವರಣೆ:
- ಟಾರ್ಗೆಟ್ ಎಲಿಮೆಂಟ್ ಮೇಲೆ ಬಲ-ಕ್ಲಿಕ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ನಾವು
onContextMenuಈವೆಂಟ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. event.preventDefault()ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಡಿಫಾಲ್ಟ್ ಸಂದರ್ಭ ಮೆನು ಕಾಣಿಸಿಕೊಳ್ಳುವುದನ್ನು ತಡೆಯುತ್ತೇವೆ.- ನಾವು
contextMenuಸ್ಟೇಟ್ ವೇರಿಯಬಲ್ನಲ್ಲಿ ಮೌಸ್ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ. - ನಾವು ಸಂದರ್ಭ ಮೆನುವನ್ನು ಪೋರ್ಟಲ್ನೊಳಗೆ, ಮೌಸ್ ನಿರ್ದೇಶಾಂಕಗಳಲ್ಲಿ ಇರಿಸಿ ರೆಂಡರ್ ಮಾಡುತ್ತೇವೆ.
- ಬಳಕೆದಾರರು ಅದರ ಹೊರಗೆ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಸಂದರ್ಭ ಮೆನುವನ್ನು ಮುಚ್ಚಲು ಹಿಂದಿನ ಉದಾಹರಣೆಯಲ್ಲಿರುವಂತೆಯೇ ಹೊರಗಿನ-ಕ್ಲಿಕ್ ಪತ್ತೆ ತರ್ಕವನ್ನು ನಾವು ಸೇರಿಸುತ್ತೇವೆ.
ಪ್ರವೇಶಸಾಧ್ಯತೆಯ ಪರಿಗಣನೆಗಳು
createPortal ಬಳಸುವಾಗ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಎಲ್ಲರಿಗೂ ಬಳಸಲು ಯೋಗ್ಯವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಪ್ರವೇಶಸಾಧ್ಯತೆಯನ್ನು ಪರಿಗಣಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಫೋಕಸ್ ನಿರ್ವಹಣೆ
ಒಂದು ಪೋರ್ಟಲ್ ತೆರೆದಾಗ (ಉದಾಹರಣೆಗೆ, ಒಂದು ಮೋಡಲ್), ಫೋಕಸ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪೋರ್ಟಲ್ನೊಳಗಿನ ಮೊದಲ ಸಂವಾದಾತ್ಮಕ ಎಲಿಮೆಂಟ್ಗೆ ಸರಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಇದು ಕೀಬೋರ್ಡ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ರೀಡರ್ನೊಂದಿಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡುವ ಬಳಕೆದಾರರಿಗೆ ಪೋರ್ಟಲ್ನ ವಿಷಯವನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಪೋರ್ಟಲ್ ಮುಚ್ಚಿದಾಗ, ಪೋರ್ಟಲ್ ತೆರೆಯಲು ಕಾರಣವಾದ ಎಲಿಮೆಂಟ್ಗೆ ನೀವು ಫೋಕಸ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು. ಇದು ಸ್ಥಿರವಾದ ನ್ಯಾವಿಗೇಷನ್ ಹರಿವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
ARIA ಗುಣಲಕ್ಷಣಗಳು
ಪೋರ್ಟಲ್ನ ವಿಷಯದ ಬಗ್ಗೆ ಅರ್ಥಪೂರ್ಣ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸಲು ARIA ಗುಣಲಕ್ಷಣಗಳನ್ನು ಬಳಸಿ. ಉದಾಹರಣೆಗೆ, ಇದು ಒಂದು ಮೋಡಲ್ ಡೈಲಾಗ್ ಎಂದು ಸೂಚಿಸಲು ಮೋಡಲ್ ಎಲಿಮೆಂಟ್ ಮೇಲೆ aria-modal="true" ಬಳಸಿ. ಮೋಡಲ್ ಅನ್ನು ಅದರ ಶೀರ್ಷಿಕೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಲು aria-labelledby ಮತ್ತು ಅದರ ವಿವರಣೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಲು aria-describedby ಬಳಸಿ.
ಕೀಬೋರ್ಡ್ ನ್ಯಾವಿಗೇಷನ್
ಬಳಕೆದಾರರು ಕೀಬೋರ್ಡ್ ಬಳಸಿ ಪೋರ್ಟಲ್ನ ವಿಷಯವನ್ನು ನ್ಯಾವಿಗೇಟ್ ಮಾಡಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಫೋಕಸ್ ಕ್ರಮವನ್ನು ನಿಯಂತ್ರಿಸಲು tabindex ಗುಣಲಕ್ಷಣವನ್ನು ಬಳಸಿ, ಮತ್ತು ಎಲ್ಲಾ ಸಂವಾದಾತ್ಮಕ ಎಲಿಮೆಂಟ್ಗಳು ಕೀಬೋರ್ಡ್ನೊಂದಿಗೆ ತಲುಪಬಹುದು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
ಪೋರ್ಟಲ್ನೊಳಗೆ ಫೋಕಸ್ ಅನ್ನು ಟ್ರ್ಯಾಪ್ ಮಾಡುವುದನ್ನು ಪರಿಗಣಿಸಿ ಇದರಿಂದ ಬಳಕೆದಾರರು ಆಕಸ್ಮಿಕವಾಗಿ ಅದರ ಹೊರಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. Tab ಕೀಗಾಗಿ ಲಿಸನ್ ಮಾಡುವ ಮೂಲಕ ಮತ್ತು ಪ್ರೋಗ್ರಾಮ್ಯಾಟಿಕ್ ಆಗಿ ಫೋಕಸ್ ಅನ್ನು ಪೋರ್ಟಲ್ನೊಳಗಿನ ಮೊದಲ ಅಥವಾ ಕೊನೆಯ ಸಂವಾದಾತ್ಮಕ ಎಲಿಮೆಂಟ್ಗೆ ಸರಿಸುವ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಬಹುದು.
ಉದಾಹರಣೆ: ಪ್ರವೇಶಿಸಬಹುದಾದ ಮೋಡಲ್
import React, { useState, useRef, useEffect } from 'react';
import ReactDOM from 'react-dom';
function AccessibleModal({ children, isOpen, onClose, labelledBy, describedBy }) {
const modalRef = useRef(null);
const firstFocusableElementRef = useRef(null);
const [previouslyFocusedElement, setPreviouslyFocusedElement] = useState(null);
const modalRoot = document.getElementById('modal-root');
useEffect(() => {
if (isOpen) {
// Save the currently focused element before opening the modal.
setPreviouslyFocusedElement(document.activeElement);
// Focus the first focusable element in the modal.
if (firstFocusableElementRef.current) {
firstFocusableElementRef.current.focus();
}
// Trap focus within the modal.
function handleKeyDown(event) {
if (event.key === 'Tab') {
const focusableElements = modalRef.current.querySelectorAll(
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
);
const firstFocusableElement = focusableElements[0];
const lastFocusableElement = focusableElements[focusableElements.length - 1];
if (event.shiftKey) {
// Shift + Tab
if (document.activeElement === firstFocusableElement) {
lastFocusableElement.focus();
event.preventDefault();
}
} else {
// Tab
if (document.activeElement === lastFocusableElement) {
firstFocusableElement.focus();
event.preventDefault();
}
}
}
}
document.addEventListener('keydown', handleKeyDown);
return () => {
document.removeEventListener('keydown', handleKeyDown);
// Restore focus to the element that had focus before opening the modal.
if(previouslyFocusedElement && previouslyFocusedElement.focus) {
previouslyFocusedElement.focus();
}
};
}
}, [isOpen, previouslyFocusedElement]);
if (!isOpen) return null;
return ReactDOM.createPortal(
<div
className="modal-overlay"
onClick={onClose}
aria-modal="true"
aria-labelledby={labelledBy}
aria-describedby={describedBy}
ref={modalRef}
>
<div className="modal-content" onClick={(e) => e.stopPropagation()}>
<h2 id={labelledBy}>Modal Title</h2>
<p id={describedBy}>This is the modal content.</p>
<button ref={firstFocusableElementRef} onClick={onClose}>
Close
</button>
{children}
</div>
</div>,
modalRoot
);
}
export default AccessibleModal;
ವಿವರಣೆ:
- ಮೋಡಲ್ ಬಗ್ಗೆ ಅರ್ಥಪೂರ್ಣ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸಲು ನಾವು
aria-modal,aria-labelledby, ಮತ್ತುaria-describedbyನಂತಹ ARIA ಗುಣಲಕ್ಷಣಗಳನ್ನು ಬಳಸುತ್ತೇವೆ. - ಮೋಡಲ್ ತೆರೆದಾಗ ಮತ್ತು ಮುಚ್ಚಿದಾಗ ಫೋಕಸ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ನಾವು
useEffectಹುಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. - ಮೋಡಲ್ ತೆರೆಯುವ ಮೊದಲು ಪ್ರಸ್ತುತ ಫೋಕಸ್ ಆಗಿರುವ ಎಲಿಮೆಂಟ್ ಅನ್ನು ನಾವು ಉಳಿಸುತ್ತೇವೆ ಮತ್ತು ಮೋಡಲ್ ಮುಚ್ಚಿದಾಗ ಅದಕ್ಕೆ ಫೋಕಸ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತೇವೆ.
- ನಾವು
keydownಈವೆಂಟ್ ಲಿಸನರ್ ಬಳಸಿ ಮೋಡಲ್ನೊಳಗೆ ಫೋಕಸ್ ಅನ್ನು ಟ್ರ್ಯಾಪ್ ಮಾಡುತ್ತೇವೆ.
ಅಂತರರಾಷ್ಟ್ರೀಕರಣ (i18n) ಪರಿಗಣನೆಗಳು
ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ, ಅಂತರರಾಷ್ಟ್ರೀಕರಣ (i18n) ಒಂದು ನಿರ್ಣಾಯಕ ಪರಿಗಣನೆಯಾಗಿದೆ. createPortal ಬಳಸುವಾಗ, ಕೆಲವು ಅಂಶಗಳನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕು:
- ಪಠ್ಯದ ದಿಕ್ಕು (RTL/LTR): ನಿಮ್ಮ ಸ್ಟೈಲಿಂಗ್ ಎಡದಿಂದ-ಬಲಕ್ಕೆ (LTR) ಮತ್ತು ಬಲದಿಂದ-ಎಡಕ್ಕೆ (RTL) ಎರಡೂ ಭಾಷೆಗಳಿಗೆ ಸರಿಹೊಂದುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಇದಕ್ಕಾಗಿ CSS ನಲ್ಲಿ ಲಾಜಿಕಲ್ ಪ್ರಾಪರ್ಟಿಗಳನ್ನು ಬಳಸುವುದು (ಉದಾಹರಣೆಗೆ,
margin-leftಬದಲಿಗೆmargin-inline-start) ಮತ್ತು HTML ಎಲಿಮೆಂಟ್ ಮೇಲೆdirಗುಣಲಕ್ಷಣವನ್ನು ಸೂಕ್ತವಾಗಿ ಹೊಂದಿಸುವುದು ಒಳಗೊಂಡಿರಬಹುದು. - ವಿಷಯದ ಸ್ಥಳೀಕರಣ: ಪೋರ್ಟಲ್ನೊಳಗಿನ ಎಲ್ಲಾ ಪಠ್ಯವನ್ನು ಬಳಕೆದಾರರ ಆದ್ಯತೆಯ ಭಾಷೆಗೆ ಸ್ಥಳೀಕರಿಸಬೇಕು. ಅನುವಾದಗಳನ್ನು ನಿರ್ವಹಿಸಲು i18n ಲೈಬ್ರರಿಯನ್ನು (ಉದಾ.,
react-intl,i18next) ಬಳಸಿ. - ಸಂಖ್ಯೆ ಮತ್ತು ದಿನಾಂಕ ಫಾರ್ಮ್ಯಾಟಿಂಗ್: ಬಳಕೆದಾರರ ಲೊಕೇಲ್ಗೆ ಅನುಗುಣವಾಗಿ ಸಂಖ್ಯೆಗಳು ಮತ್ತು ದಿನಾಂಕಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಿ.
IntlAPI ಇದಕ್ಕಾಗಿ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. - ಸಾಂಸ್ಕೃತಿಕ ಸಂಪ್ರದಾಯಗಳು: UI ಎಲಿಮೆಂಟ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಾಂಸ್ಕೃತಿಕ ಸಂಪ್ರದಾಯಗಳ ಬಗ್ಗೆ ತಿಳಿದಿರಲಿ. ಉದಾಹರಣೆಗೆ, ಬಟನ್ ಇರಿಸುವಿಕೆ ಸಂಸ್ಕೃತಿಗಳಾದ್ಯಂತ ಭಿನ್ನವಾಗಿರಬಹುದು.
ಉದಾಹರಣೆ: react-intl ನೊಂದಿಗೆ i18n
import React from 'react';
import { FormattedMessage } from 'react-intl';
function MyComponent() {
return (
<div>
<FormattedMessage id="myComponent.greeting" defaultMessage="Hello, world!" />
</div>
);
}
export default MyComponent;
react-intl ನಿಂದ FormattedMessage ಕಾಂಪೊನೆಂಟ್ ಬಳಕೆದಾರರ ಲೊಕೇಲ್ ಆಧರಿಸಿ ಅನುವಾದಿತ ಸಂದೇಶವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ. ವಿಭಿನ್ನ ಭಾಷೆಗಳಿಗಾಗಿ ನಿಮ್ಮ ಅನುವಾದಗಳೊಂದಿಗೆ react-intl ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ.
ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳು ಮತ್ತು ಪರಿಹಾರಗಳು
createPortal ಒಂದು ಶಕ್ತಿಯುತ ಸಾಧನವಾಗಿದ್ದರೂ, ಕೆಲವು ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳು ಮತ್ತು ಅವುಗಳನ್ನು ಹೇಗೆ ತಪ್ಪಿಸುವುದು ಎಂಬುದರ ಬಗ್ಗೆ ತಿಳಿದಿರುವುದು ಮುಖ್ಯವಾಗಿದೆ:
- ಪೋರ್ಟಲ್ ರೂಟ್ ಎಲಿಮೆಂಟ್ ಇಲ್ಲದಿರುವುದು: ನೀವು ಪೋರ್ಟಲ್ ರೂಟ್ ಆಗಿ ಬಳಸುತ್ತಿರುವ DOM ಎಲಿಮೆಂಟ್,
createPortalಬಳಸುವ ಕಾಂಪೊನೆಂಟ್ ಮೌಂಟ್ ಆಗುವ ಮೊದಲು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಅದನ್ನು ನೇರವಾಗಿindex.htmlನಲ್ಲಿ ಇಡುವುದು ಉತ್ತಮ ಅಭ್ಯಾಸ. - Z-Index ಸಂಘರ್ಷಗಳು:
createPortalನೊಂದಿಗೆ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಇರಿಸುವಾಗ z-index ಮೌಲ್ಯಗಳ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ. ಸ್ಟ್ಯಾಕಿಂಗ್ ಕಾಂಟೆಕ್ಸ್ಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ನಿಮ್ಮ ಪೋರ್ಟಲ್ನ ವಿಷಯವು ಸರಿಯಾಗಿ ಪ್ರದರ್ಶನಗೊಳ್ಳುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು CSS ಬಳಸಿ. - ಈವೆಂಟ್ ನಿರ್ವಹಣೆ ಸಮಸ್ಯೆಗಳು: ಈವೆಂಟ್ಗಳು ಪೋರ್ಟಲ್ ಮೂಲಕ ಹೇಗೆ ಪ್ರಸಾರವಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ ಮತ್ತು ಅವುಗಳನ್ನು ಸೂಕ್ತವಾಗಿ ನಿರ್ವಹಿಸಿ. ಈವೆಂಟ್ಗಳು ಉದ್ದೇಶಿಸದ ಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಚೋದಿಸುವುದನ್ನು ತಡೆಯಲು
e.stopPropagation()ಬಳಸಿ. - ಮೆಮೊರಿ ಲೀಕ್ಗಳು: ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ತಪ್ಪಿಸಲು
createPortalಬಳಸುವ ಕಾಂಪೊನೆಂಟ್ ಅನ್ಮೌಂಟ್ ಆದಾಗ ಈವೆಂಟ್ ಲಿಸನರ್ಗಳು ಮತ್ತು ರೆಫರೆನ್ಸ್ಗಳನ್ನು ಸರಿಯಾಗಿ ಕ್ಲೀನ್ ಅಪ್ ಮಾಡಿ. ಇದನ್ನು ಸಾಧಿಸಲು ಕ್ಲೀನಪ್ ಫಂಕ್ಷನ್ನೊಂದಿಗೆuseEffectಹುಕ್ ಬಳಸಿ. - ಅನಿರೀಕ್ಷಿತ ಸ್ಕ್ರೋಲಿಂಗ್ ಸಮಸ್ಯೆಗಳು: ಪೋರ್ಟಲ್ಗಳು ಕೆಲವೊಮ್ಮೆ ಪುಟದ ನಿರೀಕ್ಷಿತ ಸ್ಕ್ರೋಲಿಂಗ್ ನಡವಳಿಕೆಗೆ ಅಡ್ಡಿಪಡಿಸಬಹುದು. ನಿಮ್ಮ ಶೈಲಿಗಳು ಸ್ಕ್ರೋಲಿಂಗ್ ಅನ್ನು ತಡೆಯುತ್ತಿಲ್ಲ ಮತ್ತು ಮೋಡಲ್ ಎಲಿಮೆಂಟ್ಗಳು ತೆರೆದಾಗ ಮತ್ತು ಮುಚ್ಚಿದಾಗ ಪುಟದ ಜಿಗಿತಗಳು ಅಥವಾ ಅನಿರೀಕ್ಷಿತ ಸ್ಕ್ರೋಲಿಂಗ್ ನಡವಳಿಕೆಯನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
ತೀರ್ಮಾನ
React.createPortal ರಿಯಾಕ್ಟ್ನಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳುವ, ಪ್ರವೇಶಿಸಬಹುದಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ UI ಗಳನ್ನು ರಚಿಸಲು ಒಂದು ಅಮೂಲ್ಯವಾದ ಸಾಧನವಾಗಿದೆ. ಅದರ ಉದ್ದೇಶ, ಬಳಕೆ, ಮತ್ತು ಈವೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಹಾಗೂ ಪ್ರವೇಶಸಾಧ್ಯತೆಗಾಗಿ ಸುಧಾರಿತ ತಂತ್ರಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ ಉತ್ತಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಒದಗಿಸುವ ಸಂಕೀರ್ಣ ಮತ್ತು ಆಕರ್ಷಕ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನೀವು ಅದರ ಶಕ್ತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಎಲ್ಲರಿಗೂ ಒಳಗೊಳ್ಳುವ ಮತ್ತು ಬಳಸಲು ಯೋಗ್ಯವಾಗಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಅಂತರರಾಷ್ಟ್ರೀಕರಣ ಮತ್ತು ಪ್ರವೇಶಸಾಧ್ಯತೆಯ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಪರಿಗಣಿಸಲು ಮರೆಯದಿರಿ.
ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿನ ಮಾರ್ಗಸೂಚಿಗಳು ಮತ್ತು ಉದಾಹರಣೆಗಳನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ, ನೀವು ಸಾಮಾನ್ಯ UI ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸಲು ಮತ್ತು ಅದ್ಭುತವಾದ ವೆಬ್ ಅನುಭವಗಳನ್ನು ರಚಿಸಲು ಆತ್ಮವಿಶ್ವಾಸದಿಂದ createPortal ಅನ್ನು ಬಳಸಬಹುದು.