m6d3周總結

本週主要任務完成情況

本週是我工作的第一個星期,由於對項目架構不瞭解所以本週沒有進行實際的任務,主要是學習React+Redux+ES6的基礎知識。以前都是用的jquery,在這個坑裏難以跳出來。學習了React後對前端開發有了新的認識,就像學習了一門新語言,雖然還不能熟練地用React的思想去思考,但是能感覺到React組件開發的便利,相信我也會喜歡上高大上的React。 0.0

下週的計劃

  • 主要是高質量地完成工作的第一份任務。

  • 在rc上敏感影集列表增加一個點擊該用戶暱稱ID,跳轉到用戶的個人中心(1d);

  • 評論流水中增加一個點擊該用戶暱稱ID,跳轉到用戶的個人中心(1d)。

  • 繼續學習和鞏固React+Redux+ES6,並用其知識幫助理解op項目代碼細節。

  • 看rc項目代碼,不理解的向大牛提問。

學習和成長

主要將React+Redux官方英文文檔看了一遍,學習了很多新單詞,對React組件開發有了大致認識,一下子看的有點多,瞭解的不深入,有一些細節下週研究。

1. React

  • JSX: js的語法擴展,在js中寫html可以生成dom元素,十分方便易於讀寫,還可以使用表達式。它是用babel轉碼器在編譯階段轉換成正常js的。

  • 組件:React是單向數據流,父組件通過props向子組件傳遞數據,子組件只讀取不修改。子組件可以通過回調函數該變父組件state向父組件傳遞數據。
    兩個子組件間傳遞數據要通過父組件。過程如下:
    I. 找一個共同的父組件,state放在父組件。
    II. 其中一個子組件通過父組件傳遞的回調函數改變state。
    III. state改變會同過props自動更新另一個子組件的UI。

2. Redux

按文檔將Todo List demo敲了一遍。主要學習了三個內容:
(1) Action:Redux中state是不能修改的,只能添加,是爲了能夠實現回退功能,結果只能用action添加新的state,action是唯一數據來源。action的結構一般是

{
    type:意圖類型,表示要幹什麼(對state進行什麼樣的修改)
    data:數據,表示要怎麼幹(把state修改爲什麼)
}

通常建立action創建函數,保存在actions目錄中,action創建函數結構:

function actionName(data){
    return{
        type:actionName,//大寫加下劃線
        data
    }
}

(2) Reducer:連接action和state的橋樑,就像MVC中C是M和V的橋樑。reducer函數結構一般是:

function reducerName(prevState=initialState,action){
    switch(action.type){
        case type1:
        .
        .
        .
        default:
        return prevState;
    }
}

(3) Store:存儲state的數據結構,應該用的棧結構。用法:

let store =createStore(App);
store.getState()//獲取當前state,就是棧頂的state
store.dispatch(action)//執行一個action更新state
let listener=store.subscriber(listener)//註冊監聽器,當state變化時執行listener回調
listener()//註銷監聽器

3. react-redux

<Provider store={store}>
    <App />
  </Provider>

將整個組件的state儲存在store中。Provider讓我想起了Android中的四大組件之一Provider,是提供數據的東西,在這裏store也是提供數據的。
還有個connect是連接多個reducer的,這個示例代碼看得不太懂,下週好好研究一下。

4. react-router

把官方示例做了一遍,學習瞭如下內容。
(1)

<Router history={hashHistory}>
  <Route path="/" component={App}>
    <IndexRoute component={Home}/>
    <Route path="/repos" component={Repos}/>
    <Route path="/about" component={About}/>
    <Redirect from="/about" to="/repos" />
    <IndexRedirect to="/welcome" />
  </Route>
</Router>

(I) 嵌套路由。從左到右檢查pathname,匹配時進入子Route繼續匹配。
(II) IndexRoute是完全匹配.
(III)Redirect。當匹配‘/about’時跳轉到‘/repos’。
(IV)當路由匹配到一個路由時不再往下匹配,所以上面Redirect不會生效。
(V) IndeRedirect.訪問根路由時跳轉到‘/Welcome’。
(2). Link&&IndexLink

<Link to="/about">About</Link>

對a鏈接進行包裝,生成一個指向to的鏈接。有activeClassName屬性,可以設置鏈接激活時的樣式。

5. rc項目

(1).瞭解了一下結構
(2).針對一個Message頁看了一下組件結構
整個頁面加載之前:

Layout
  GloableInitOnce
     GloableLoadingMask
     GloableConfirmDialog

MsgPage加載完成:

Header
AlertBar
MsgTabBar
    UserTabBar
    AllTabBar
UnreplayUserCheckBox
MsgListContainer
    MsgBox
    .
    .
    .
    Pagination
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章