摘要:打算用寫對話框已經很長一段時間,現在是時候兌現承諾了。核心在于使用的接口。該接口將渲染后的節點嵌入通常是,并保證只嵌入一次。所以,我們可以這樣寫一個對話框或模態框一個新的會出現在內部一個完整點擊運行感謝你花時間閱讀這篇文章。
打算用React寫對話框已經很長一段時間,現在是時候兌現承諾了。實際上,寫起來相當簡單。
核心在于使用React的接口React.createPortal(element, domContainer)。該接口將element渲染后的DOM節點嵌入domContainer(通常是document.body),并保證只嵌入一次。
歡迎訂閱我的博客。
所以,我們可以這樣寫一個對話框或模態框:
function Dialog() { return React.createPortal(Dialog contents, document.body ) }
一個新的div會出現在body內部:
一個完整DEMO:
點擊運行DEMO
class Modal extends React.Component { render() { const { visible, onClose } = this.props return visible && ReactDOM.createPortal(, document.body) } } class App extends React.Component { state = { visibleModal: false } showModal = () => this.setState( { visibleModal: true } ) handleCloseModal = () => this.setState( { visibleModal: false } ) render() { const { visibleModal } = this.state return Content
} } const StyledModalRoot = styled.div` position: fixed; z-index: 1001; left: 0; top: 0; display: grid; place-items: center; width: 100%; height: 100%; background: rgba( 0, 0, 0, 0.2 ); >.box { position: relative; display: grid; place-items: center; width: 80%; height: 80%; background: white; border-radius: 10px; box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12); } `
感謝你花時間閱讀這篇文章。如果你喜歡這篇文章,歡迎點贊、收藏和分享,讓更多的人看到這篇文章,這也是對我最大的鼓勵和支持!
歡迎在Star和訂閱我的原創前端技術博客。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110185.html
摘要:組件結構頭部內容區域尾部操作按鈕模態框結構分為三部分,分別為頭部內部區域和操作區域,都提供了,可以根據需要定制。調用點擊確定按鈕的回調處理點擊取消按鈕的回調處理用創建一個索引就很方便拿到模態框組件內部的方法了。 基本上每個項目都需要用到模態框組件,由于在最近的項目中,alert組件和confirm是兩套完全不一樣的設計,所以我將他們分成了兩個組件,本文主要討論的是confirm組件的實...
摘要:前言項目中,當需要用戶處理事務,又不希望跳轉頁面以致打斷工作流程時,我們會經常使用到對話框去承載相應的操作。雖然用得多,但是很多人其實并不知道怎么去寫。饒有興趣,自己嘗試寫了一個。 前言 項目中,當需要用戶處理事務,又不希望跳轉頁面以致打斷工作流程時,我們會經常使用到對話框去承載相應的操作。雖然用得多,但是很多人其實并不知道怎么去寫。饒有興趣,自己嘗試寫了一個。 API 參數 ...
摘要:尤其是遇到二次確認等場景因此,打算從頭整理移動彈窗的基礎知識,以彈窗體系為切入點,從定義出發,對移動彈窗進行分類,然后分別分析每一類彈窗的應用場景,以及在使用過程中需要注意的點。 摘要: 最為常見的【彈窗】反而是最捉摸不定的東西。各種類型的彈窗傻傻分不清楚,不知道在什么場景下應該用哪種彈窗。尤其是遇到二次確認等場景…… 因此,打算從頭整理移動彈窗的基礎知識,以iOS彈窗體系為切入點,從...
閱讀 1443·2021-11-22 13:54
閱讀 4323·2021-09-22 15:56
閱讀 1815·2021-09-03 10:30
閱讀 1318·2021-09-03 10:30
閱讀 2086·2019-08-30 15:55
閱讀 1851·2019-08-30 14:13
閱讀 2059·2019-08-29 15:19
閱讀 2341·2019-08-28 18:13