接口及傳參
因自己一直只會做最簡單的項目,所以并不清楚從接口讀取數據是什么意思,但這個項目必須是要從服務端讀取數據的,所以,就跟著同事的demo嘗試了一下。this.props...具體的,我還不太會,還需要繼續學習。
JS時間倒計時
這是js里的經典部分,而不是RN的專屬,由此也可以看到,JS是基礎呢。如何呈現出,已經開播的時間呢?或者說,呈現出過程中的時間,又或者說,呈現出還有多少的時間才開始呢?在JS中與在RN中的不同是什么呢?
RN時間倒計時
在JS中,倒計時的動態效果,我們是用 setTimeout("show_time()", 1000) 即可,并在else里使用clearTimeout(timerID) 清除定時器 。但在RN中,我們也需要動態刷新數據。想到RN中文網講state那一部分時,所介紹的 setInterval 方法。在倒計時的呈現中,時間差是需要動態的,再具體一點兒,是當前時間是動態的,然后讓當前時間與固定時間相減就可以得到倒計時了。這就是說,當前時間是需要如此定義的 this.state ={ liveTime : new Date() }。
接下來的問題是,哪里刷新呢?在 constructor中定義刷新函數是OK的。如何在頁面渲染完成后呈現的是新的時間呢。于是,我第一次使用了 componentDidMount 方法。
RN組件的生命周期的相關文章比較多,簡單而言就是說,一個組件從它被加載,到最終卸載時會經歷一個完整的生命周期:constructor--組件創建時調用一次。 componentWillMount--如果需要從本地存儲中讀取數據用于顯示,常用該方法,因為在這個方法中,如果通過setState函數修改狀態機變量,RN框架不會額外執行渲染。 rener--組件渲染,必須有。componentDidMount--初始化渲染完成后就會馬上被調用。?
于是,如下的代碼就可以在界面上顯示當前時間啦:
再回歸到倒計時吧,因當前時間是用 new Date() 創建,與另一個日期格式不同,因此需要首先規范下日期格式咯:
假設從后臺傳遞過來的數據是這樣的:“2009-12-02 12:25”,因需要將數據改為" 2009/12/02 12:25",然后再傳遞給 new Date 就可以使時間變為時間戳啦。var date=new Date();? 以前只是了解 new Date ,后來才知道是可以在其中傳參,來給它一個固定的日期格式的。
if else 還是 switch 呢?
曾經都在書本上的知識,真正用起來時,才明白優化是什么意思?如何使代碼更為簡潔,效率也更高呢?是只考慮 如何實現,還是如何更好的實現呢?作為一名程序員,給自己的定位又是什么呢?摘錄一篇前輩的文章吧:
switch...case與if...else的根本區別在于,switch...case會生成一個跳轉表(Binary Tree算法)來指示實際的case分支的地址,而這個跳轉表的索引號與switch變量的值是相等的。switch...case不用像if...else那樣遍歷條件分支直到命中條件,而只需訪問對應索引號的表項從而到達定位分支的目的。switch適用于分支較多的情況呢。
但說實話,我對效率并沒有很多的概念。我還處于從 0 到 1 的階段,期待自己可以從 1 到 2 的階段吧。