【ReactNative】學(xué)習(xí)筆記(二)

山重水復(fù)與柳暗花明

?在項目中,我才學(xué)會一個詞,叫做“迭代”。小時候,總以為任何事情,不做則已,做則做好。于是,在每個細(xì)節(jié)上都分外認(rèn)真,總希望是踏踏實實一步一個腳印的走過每一個坑。但后來卻發(fā)現(xiàn),有些坑,在這個時間點(diǎn),你真的走不過,那為什么不繞路,先去解決其他的坑呢?畢竟,一個項目,坑不只一個,這個坑解決不了,并不代表其他的坑就不能解決。這是一個看“結(jié)果”的年代,也許存在一個bug的結(jié)果總比卡在一個bug其他都沒有做的結(jié)果要好一點(diǎn)。這是我的小小思考,因我真的是那個,一路走,一路撒下bug的人兒呢~

很感恩,在工作的里面,可以不斷經(jīng)歷自我的破碎,體會上帝的智慧,這是工作以來,第二次學(xué)習(xí)如何解決bug的能力吧。這些本該在我讀書的時候,就學(xué)會的技巧,沒有想到,在工作的里面,依然在學(xué)習(xí)。祂給的功課,從不會忘記,因祂總會在最好的時間再次提醒。


拍照及讀取圖庫的組件

讀取圖庫或者啟用相機(jī)拍照的組件,最為經(jīng)典的是image-picker,有1300+的星,react-native-image-picker地址。水水的自己原本只會使用自己寫的組件import到新的組件中,或者直接使用RN官方提供的組件,最難的也不過是Navigator,但第一次使用第三方組件,卻連他們在git上的說明文檔都看不懂,其實,自己也真的夠水了的。

關(guān)于image-picker的使用說明作者已經(jīng)說的很清楚,但我當(dāng)時,真的不明白他到底是什么意思,直到看到這篇文檔,React-Native 調(diào)用相機(jī)Android or IOS。在這篇文章中,作者將Android環(huán)境下的配置是非常的明了,但iOS也比較簡明,因他知道,iOS真的很簡單,但我就是配置失敗,我不明白,$react-native link 到底是什么意思?我已經(jīng)link,為什么還是失敗呢?原來,link后面是要加上第三方組件的名字的。

link第三方的組件

學(xué)習(xí)看懂第三方組件的說明文檔,才可以使用他們的文檔呀,學(xué)習(xí)需要變通,哎,姑娘,不得不說,要走的路還很長呢!目前,可以調(diào)用該組件實現(xiàn)如下的情況。如何進(jìn)一步修改其文字或者布局等,可以再研究。但這個組件只是調(diào)用,并不能保存,因此這是存留的問題哦~需要再調(diào)用其他的組件將圖片保存下來。

image-picker調(diào)用后的情形

Camera組件的學(xué)習(xí)大概花費(fèi)了兩天左右的時間,但最后搞好時,大概只用了一個小時,學(xué)習(xí)的成本好高呀。為什么會有這么久呢?是我最初看到這個組件的時候,我發(fā)現(xiàn)我不會使用,于是,我就去尋找其他的組件,看看是否有我會使用的,然而,看來看去,我依然不會使用,卻浪費(fèi)了非常多的時間。專注解決問題,而不是徒然慌亂的尋找解決方案,是image-picker中要學(xué)習(xí)的。最后神的憐憫是我看到Android下如何使用該組件的文章,我才開始理解組件的說明中那些是什么意思。也許我還要學(xué)習(xí)的是,也許一個環(huán)境搞不定,那就去修改解決問題的描述再進(jìn)行查找,變換思路,而不是執(zhí)拗到底。后來又發(fā)現(xiàn)實際應(yīng)用中是需要對圖片進(jìn)行編輯,比如當(dāng)圖片大小超過選定范圍時,可以取其上部而并非總是圖片中部,就需要使用編輯屬性allowsEditing,將其設(shè)定為true。其中,ios是可以對圖片進(jìn)行編輯的,至于選擇的區(qū)域,是可以拖動,android本來就不支持編輯。


日期組件

日期組件的問題與Camera基本相似,不斷的尋找最適合的組件,卻不會調(diào)用每一個組件,也是兩天的時間,但卻沒有任何意義的花費(fèi)。

有前輩給介紹了日期組件:React Native日期組件。當(dāng)他陪著我一起將該組件使用起來的時候,他也教會了我很多。但最后卻發(fā)現(xiàn),該組件沒有minuteInterval最小間隔時間,比5分鐘,10分鐘的時間間隔,而只有1分鐘的時間間隔,因需求上不滿足而放棄。


Mask組件

當(dāng)四天之后,在Camera和日期上并沒有任何進(jìn)展時,整個人都對自己深深的絕望時,早上起來,卻被圣靈提醒,我是真的什么都做不了嗎?我花費(fèi)了四天的時候收獲了什么呢?并不是說,我不該認(rèn)真研究解決bug,但應(yīng)當(dāng)有智慧,何時自己獨(dú)立解決問題,何時請教他人,何時放棄一個bug,在時間的里面,一定是有美好的順序的。我后來才想到,如果一個問題,我認(rèn)真努力,變換解決思路,兩個小時之后,我依然不能解決時,我可以請教他人。在與他人認(rèn)真討論,描述清楚需求但依然沒有更好的解決方法時,三個小時候,也可以選擇暫時放棄這個bug。這樣,不會出現(xiàn)四天的時間都在同樣的bug,卻不是致命的bug上,也不會耽誤工作里其他的進(jìn)度。

當(dāng)我被圣靈提醒,想明白這一點(diǎn)時,我開始想,目前除了日期和Camera,還有沒有其他我可以做的?我想到了我一直沒有勇氣嘗試的主頁中的list。那些list一定是一個封裝好的組件以不同的數(shù)據(jù)展現(xiàn)出來了而已。我不知道如何調(diào)用不同的數(shù)據(jù)在Listview中展示,但可以嘗試封裝一個組件。Modal組件是一個在當(dāng)前頁面可以彈出另一個東西的組件,我之前以為只能是彈出對話框等,但跟前輩們討論過才發(fā)現(xiàn),Mask遮罩也是利用Modal組件。Modal的屬性有不同的值時有不同的效果,具體可看react-native-modalbox。但知道可以使用該組件產(chǎn)生自己想要的效果時,我開始研究該如何使用。

也許是學(xué)生時代沿襲而來的壞習(xí)慣,當(dāng)看到一點(diǎn)點(diǎn)的不熟悉,就很想問人。我知道要在一個文件中看看Example如何出現(xiàn)的,但我看到那么多的代碼時,還是不愿意花心思去看。但問過前輩之后,還是自己默默的研究,知道最后走到ES5與ES6不兼容的代碼。(在同一個項目里,所有的js當(dāng)都使用ES6)接下來,當(dāng)考慮如何點(diǎn)擊編輯按鈕就可以彈出Modal了,因目前的情況是點(diǎn)擊沒有反應(yīng),后來前輩給的建議是在當(dāng)前按鈕上綁定bind(this)。

ES5與ES6導(dǎo)出與引入的不同

這些似乎導(dǎo)入本地組件的方式,那如何導(dǎo)入網(wǎng)上install的組件呢?

ES5與ES6導(dǎo)入網(wǎng)上第三方組件

具體描述下點(diǎn)擊按鈕報錯的情形吧,我希望點(diǎn)擊“open”按鈕時,就可以打開Modal,但卻有如下的報錯,前輩給的建議是 openModel = ()=》{} 或者 this.openModeal.bind(this)

this的問題?

當(dāng)控制臺打印的 navigator對象引用 為undefined 時,說明在renderScene中沒有傳入navigator。如何沒有傳入navigator,那怎么可能調(diào)整成功呢?所以,可以 方法一? 把 導(dǎo)航傳進(jìn)去? 方法二 寫回調(diào)方法(也就是說,在點(diǎn)擊這個按鈕的時候? 回調(diào)? 寫push),因我實在不能理解回調(diào)并活學(xué)活用,前輩教我將導(dǎo)航傳進(jìn)去,如下所示:(這就是:組件和組件的傳參

在子組件中傳入導(dǎo)航

當(dāng)后來的某一天,我突然明白,原來頁面也是一個大組件,那些自定義的組件也是組件,只是在大組件里的子組件,是可以傳參的。組件間使用props可以傳參即標(biāo)簽的形式。很久之后的某一天,也許我會懂得,組件間傳參(組件在頁面中,組件就可以拿到this.props)與頁面間通過push傳參的不同。在頁面間傳參時,B頁面可以通過this.props.name來獲得A頁面所傳遞的屬性值;也可以在A頁面設(shè)定回調(diào)函數(shù),B頁面往A頁面?zhèn)髦稻褪钦{(diào)用回調(diào)方法把值寫上A頁面就可以使用這個值啦。


布局依然有問題

據(jù)說TextView的坑很多,但我還沒有遇到那么多,因我還很水…但目前遇到的是布局,我為一個編輯框設(shè)置為多行輸入,但placeholder卻在整個輸入框垂直居中了,而且,刪掉了整個頁面的垂直居中都還有問題,唯獨(dú)不能使placeholder靠頂部提示,后來有前輩提示說,在多行輸入框的外面增加View組件,并不為該組件定位除了marginTop或者padding其他的樣式,余下的再定義……


那些迷茫

當(dāng)自己依然很迷茫,不知道如何學(xué)習(xí)RN時,前輩問了我?guī)讉€問題,RN的思路是什么,模塊化組件是什么意思,生命周期是什么,JS的基本操作比如如何操作對象與數(shù)組,state與props的熟悉度……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容