ReactPortals(Portal)
ReactPortal鎻愪緵浜嗕竴涓紭绉€鐨勮В鍐虫柟妗堬紝鍙互灏嗗瓙鑺傜偣娓叉煋鍒癉OM鑺傜偣鑰屼笉鏄埗缁勪欢銆侾ortals鏈€甯歌鐨勭敤渚嬫槸闇€瑕佸湪瑙嗚涓婂皢瀛愮粍浠朵笌鐖跺鍣ㄥ垎寮€锛屽涓嬫墍绀恒€傛ā鎬佸璇濇宸ュ叿鎻愮ず鎮诞鍗$墖鍔犺浇鍔ㄧ敾鍙互浣跨敤ReactDOM.createPortal(child,container)鍒涘缓涓€涓狿ortal銆傝繖閲宑hild鏄竴涓猂eact鍏冪礌锛宖ragment鐗囨鎴栬€呭瓧绗︿覆锛宑ontainer鏄疨ortal瑕佹彃鍏ョ殑DOM鑺傜偣鐨勪綅缃€備笅闈㈡槸涓€涓娇鐢≧eactDOM.createPortal(child,container)鍒涘缓鐨勭畝鍗曟ā鎬佺粍浠躲€俢onstModal=({message,isOpen,onClose,children})=>{if(!isOpen)returnnull;returnReactDOM.createPortal({message}/span>Close
,domNode);};鍗充娇Portal鍦ㄧ埗DOM鍏冪礌涔嬪鍛堢幇锛屽畠鐨勮涓轰笌React缁勪欢涓殑閫氬父琛屼负鐩稿悓锛屼笌.瀹冨彲浠ユ帴鍙楅亾鍏峰拰涓婁笅鏂嘇PI銆傝繖鏄洜涓篜ortal椹荤暀鍦≧eactTree灞傛缁撴瀯涓紙涔熷氨鏄锛屼繚璇佸湪鍚屼竴ReactTree涓級銆傛垜浠负浠€涔堥渶瑕佸畠锛熷綋鎴戜滑鍦ㄧ壒瀹氬厓绱狅紙鐖剁粍浠讹級涓娇鐢ㄦā鎬佸脊绐楁椂锛屾ā鎬佸脊绐楃殑楂樺害鍜屽搴︿細缁ф壙妯℃€佸脊绐楁墍鍦ㄧ殑缁勪欢锛岃繖鎰忓懗鐫€妯℃€佸脊绐楃殑鏍峰紡鍙兘浼氬彈鍒扮埗缁勪欢銆備紶缁熸ā寮忛渶瑕丆SS灞炴€э紝渚嬪overflow:hidden鍜寊-index鏉ラ伩鍏嶈繖涓棶棰樸€備笂闈㈢殑浠g爜绀轰緥灏嗗鑷存ā鎬佹鍦ㄦ牴鐩綍涓嬬殑宓屽缁勪欢涓憟鐜般€備娇鐢ㄦ祻瑙堝櫒妫€鏌ュ厓绱犳椂锛屽涓嬫墍绀恒€傛帴涓嬫潵鎴戜滑鐪嬬湅ReactPortal鏄浣曚娇鐢ㄧ殑銆備笅闈㈢殑浠g爜浣跨敤createPortal()鍦ㄦ牴鏍戝眰娆$粨鏋勪箣澶栧垱寤篋OM鑺傜偣鏉ヨВ鍐宠繖涓棶棰樸€俢onstModal=({message,isOpen,onClose,children})=>{if(!isOpen)returnnull;returnReactDOM.createPortal(
{message}Close