摘要:其他的項(xiàng)目使用了拼裝樣式驗(yàn)證傳入的屬性是否是函數(shù)驗(yàn)證父組件傳入的數(shù)據(jù)格式是否正確五參考文獻(xiàn)談?wù)劦氖褂檬褂脠?chǎng)景
仿 taro-ui 實(shí)現(xiàn) modal 組件 小程序組件.
簡(jiǎn)介:
項(xiàng)目中使用到彈窗類(lèi)的組件,重新制造了一個(gè)輪子.
源碼地址: https://github.com/xiangxiong...
編寫(xiě)完modal組件總計(jì)花了28分鐘.
效果圖:
編寫(xiě)組件的基本思路:
1、分析組件要實(shí)現(xiàn)的基本功能.對(duì)組件進(jìn)行拆分.確定實(shí)現(xiàn)功能的先后順序.
2、確定使用方法, 在做之前應(yīng)該想好輸入和輸出. 確定好數(shù)據(jù)結(jié)構(gòu).
3、先寫(xiě)基本結(jié)構(gòu), 后寫(xiě)樣式, 在追加事件和交互, 細(xì)節(jié)優(yōu)化.
4、技術(shù)總結(jié).
一、 組件拆分
該組件可以分為三個(gè)部分.
1、遮罩層,點(diǎn)擊遮罩層可以關(guān)閉彈窗.
2、標(biāo)題,內(nèi)容,操作. 這些功能多是可以動(dòng)態(tài)配置的.
3、點(diǎn)擊取消關(guān)閉彈窗,點(diǎn)擊確認(rèn)可以給父頁(yè)面?zhèn)髦?
二、確定使用方法
modal 參數(shù):
參數(shù) | 說(shuō)明 | 類(lèi)型 |
---|---|---|
title | 元素的標(biāo)題 | String |
content | 元素的內(nèi)容 | String |
cancelText | 取消按鈕的文本 | String |
closeOnClickOverlay | 點(diǎn)擊浮層的時(shí)候時(shí)候自動(dòng)關(guān)閉 | Boolean |
confirmText | 確認(rèn)按鈕的文本 | String |
isOpened | 是否顯示模態(tài)框 | Boolean |
modal 事件:
事件名稱 | 說(shuō)明
onClose | 觸發(fā)關(guān)閉時(shí)的事件 |
onCancel | 點(diǎn)擊取消按鈕觸發(fā)的樣式 |
onConfirm | 點(diǎn)擊確認(rèn)按鈕觸發(fā)的事件 |
數(shù)據(jù)結(jié)構(gòu)
this.state = { modal:{ isOpened:false, title:"標(biāo)題", content:"內(nèi)容", cancelText:"取消", confirmText:"確認(rèn)", closeOnClickOverlay:false } }
三、分步驟實(shí)施
實(shí)現(xiàn) UI 功能.
實(shí)現(xiàn)modal 的結(jié)構(gòu)
mp-modal mp-modal--active 控制這個(gè)modal 是否顯示隱藏。
mp-modal__overlay 通用的遮罩層.
mp-modal__container modal 顯示區(qū)域.
mp-modal__title,mp-modal__content,mp-modal__footer 分別為 標(biāo)題,內(nèi)容,事件觸發(fā).
標(biāo)題 內(nèi)容
* 實(shí)現(xiàn)modal 的 css 樣式.(說(shuō)重要的幾個(gè)點(diǎn)) * 通用的遮罩層. ``` { top: 0; left: 0; width: 100%; height: 100%; position: absolute; background-color: rgba($color: #000, $alpha: 0.3); } ``` * modal 居中定位 ``` { position: $pos; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` * 這兩部分可以做成公共的css 給整個(gè)項(xiàng)目提供使用.
react 部分功能實(shí)現(xiàn).
核心點(diǎn)有2個(gè):
1、在子組件生命周期 componentWillReceiveProps 中監(jiān)聽(tīng)父組件狀態(tài)的變化決定是否渲染子組件.
componentWillReceiveProps(nextProps){ const {_isOpened} = this.state; if(_isOpened != nextProps.isOpened){ this.setState({ _isOpened:nextProps.isOpened }); } }
* 2、子組件接收父組件傳遞過(guò)來(lái)的屬性和事件. * 組件的代碼: ``````
四、技術(shù)總結(jié):
1、掌握sass 的寫(xiě)法,css 3 掌握的基礎(chǔ)知識(shí), css 偽類(lèi) :after ,:before , 選擇器 :not(:first-child) :last-child, transition 動(dòng)畫(huà), flex 布局, transform 選擇. 掌握這些知識(shí)之后輕松可以寫(xiě)出UI.
2、掌握react 父子之間數(shù)據(jù)的傳遞.
3、掌握 componentWillReceiveProps 這個(gè)生命周期函數(shù)的用法。
4、其他的項(xiàng)目使用了 classnames 拼裝樣式, lodash 驗(yàn)證傳入的屬性是否是函數(shù), PropTypes 驗(yàn)證父組件傳入的數(shù)據(jù)格式是否正確.
五、參考文獻(xiàn):
談?wù)凴eact--componentWillReceiveProps的使用.
css before 使用場(chǎng)景.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103460.html
摘要:其他的項(xiàng)目使用了拼裝樣式驗(yàn)證傳入的屬性是否是函數(shù)驗(yàn)證父組件傳入的數(shù)據(jù)格式是否正確五參考文獻(xiàn)談?wù)劦氖褂檬褂脠?chǎng)景 仿 taro-ui 實(shí)現(xiàn) modal 組件 小程序組件. 簡(jiǎn)介: 項(xiàng)目中使用到彈窗類(lèi)的組件,重新制造了一個(gè)輪子. 源碼地址: https://github.com/xiangxiong... 編寫(xiě)完modal組件總計(jì)花了28分鐘. 效果圖: showImg(htt...
摘要:多端統(tǒng)一開(kāi)發(fā)框架優(yōu)秀學(xué)習(xí)資源匯總官方資源項(xiàng)目倉(cāng)庫(kù)官方文檔項(xiàng)目倉(cāng)庫(kù)官方文檔微信小程序官方文檔百度智能小程序官方文檔支付寶小程序官方文檔字節(jié)跳動(dòng)小程序官方文檔文章教程不敢閱讀包源碼帶你揭秘背后的哲學(xué)從到構(gòu)建適配不同端微信小程序等的應(yīng)用小程序最 Awesome Taro 多端統(tǒng)一開(kāi)發(fā)框架 Taro 優(yōu)秀學(xué)習(xí)資源匯總 showImg(https://segmentfault.com/img/r...
摘要:前言本文的前身是源自上的項(xiàng)目但由于該項(xiàng)目上次更新時(shí)間為年月日,很多內(nèi)容早已過(guò)期或是很多近期優(yōu)秀組件未被收錄,所以小肆今天重新更新了內(nèi)容并新建項(xiàng)目。提交的項(xiàng)目格式如下項(xiàng)目名稱子標(biāo)題相關(guān)介紹如果收錄的項(xiàng)目有錯(cuò)誤,可以通過(guò)反饋給小肆。 前言 本文的前身是源自github上的項(xiàng)目awesome-github-vue,但由于該項(xiàng)目上次更新時(shí)間為2017年6月12日,很多內(nèi)容早已過(guò)期或是很多近期優(yōu)...
本文收集學(xué)習(xí)過(guò)程中使用到的資源。 持續(xù)更新中…… 項(xiàng)目地址 https://github.com/abc-club/f... 目錄 vue react react-native Weex typescript Taro nodejs 常用庫(kù) css js es6 移動(dòng)端 微信公眾號(hào) 小程序 webpack GraphQL 性能與監(jiān)控 高質(zhì)文章 趨勢(shì) 動(dòng)效 數(shù)據(jù)結(jié)構(gòu)與算法 js core 代碼規(guī)范...
閱讀 2938·2023-04-26 02:22
閱讀 2292·2021-11-17 09:33
閱讀 3144·2021-09-22 16:06
閱讀 1078·2021-09-22 15:54
閱讀 3541·2019-08-29 13:44
閱讀 1921·2019-08-29 12:37
閱讀 1327·2019-08-26 14:04
閱讀 1920·2019-08-26 11:57