目錄antd
1、組件結構this
一、antd代碼結構spa
二、rc-ant代碼結構component
三、組件結構對象
2、antd組件調用關係及功能詳解blog
一、Model.tsx生命週期
二、confirm隊列
3、rc-dialog詳解事件
一、e.target 與 e.currentTarget圖片
二、onMouseDown、onMouseUp 和 onClick
三、理解dialog中的鼠標事件
四、思惟導圖
1、組件結構
一、ant代碼結構
二、rc-ant代碼結構
三、組件結構
ant中modal的index.tsx中引入了Modal和confirm
Modal包含的不一樣狀態method(info、Sucesses等)都是經過調用confirm方法傳遞不一樣參數實現
Modal中引用rc-dialog,作彈窗的渲染
2、antd組件調用關係
一、Model.tsx
modal中的方法包括
-
handleCancel:在點擊取消按鈕時觸發,觸發時調用this.props.onCancel()
- handleOk:在點擊OK按鈕時觸發,觸發時調用this.props.onOk()
-
componentDidMount:生命週期,掛在完成時觸發
-
renderFooter:確認、取消按鈕所在的彈框底部內容處理
-
render:渲染方法,包括本地化等
- Modal.method():Modal容許使用method方法建立信息提示框,包含五種方法均引自confirm
二、confirm
confirm中的方法包括
上圖中代碼圖片清晰大圖以下:
3、rc-dialog詳解
一、e.target 與 e.currentTarget
- currentTarget: event對象屬性,返回當前處理該事件的元素、文檔或窗口。
- target: event對象屬性,返回觸發該事件的元素、文檔或窗口。
二、onMouseDown、onMouseUp 和 onClick
若是用戶在一個元素上點擊,那麼最少三個事件會被觸發,事件發生順序:
- mousedown,當用戶在這個元素上按下鼠標鍵的時候
- mouseup,當用戶在這個元素上鬆開鼠標鍵的時候
- click,當一個mousedown和一個mouseup都在這個元素上被檢測到的時候發生
- 由第3點引伸:鼠標在mousedown和mouseup之間移動拖拽的,根據時間冒泡,mouseup、mousedown所在的公同父元素會觸發click事件
三、理解dialog中的鼠標事件
3.1 mousedown在dialog外click的執行順序
- 觸發onMaskMouseUp:if條件不知足,什麼操做都不執行
- 觸發onMaskClick:!this.dialogMouseDown必定成立,e.target 與 e.currentTarget值也相同
- 結果:關閉彈窗
- 注:mousedown在dialog外,mouseup在dialog內時,click中 e.target === e.currentTarget 依然成立,都是Mask。結果不變,關閉窗口
3.2 mousedown在dialog內click的執行順序
- 觸發onDialogMouseDown:this.dialogMouseDown賦值爲true
- 觸發onMaskMouseUp:if條件成立,timeout事件加入任務隊列
- 觸發onMaskClick:this.dialogMouseDown 爲true,if條件不成立
- 結果:不關閉彈窗
- timeout事件執行:this.dialogMouseDown還原爲false
- 注:mousedown在dialog內,mouseup在dialog外時,click中 e.target === e.currentTarget 依然成立,都是Mask。this.dialogMouseDown 也依然爲true。結果不變,不關閉窗口
四、思惟導圖