dva使用心得

組件在異步數據到來前已經完成初始化,是致使constructor中沒法取到所需數據的緣由。因此最直接的方法,就是修改組件建立的時間vue

//把原來的組件內部控制顯示
/* <ComponentName show={modelName.show}/> */
//更改成狀態直接控制組件是否存在
{
  modelName.show && <ComponentName/>
}
//或者
{
  modelName.show ? <ComponentName/> : null
}

//或者更嚴謹一點
//因爲項目中加入了用戶數據獲取失敗,需從新登陸,因此也就沒有加上後面這個
{
  modelName.show && modelName.needData && <ComponentName/>
}react

目標組件不會在頁面加載時就初始化vuex

而是在用戶點擊控制按鈕,須要使用組件時,才初始化異步

 問題and心得:函數

1.初始化數據是怎麼執行的。this

2.connect怎麼傳輸數據的。url

3.何時寫全局model,何時寫局部model。spa

4.何時會是同步,何時使用同步。component

5.可否使用@connect({sms})來把model層的數據傳遞到當前組件。經過this.props.sms能夠獲取到model裏sms.js中的state數據)orm

6.流程:dispatch時候models裏面的effect,models中的effect會yield call已經import進來的service裏面的action,而後service裏面,action會調用request,把url和數據傳輸給後臺,而後在models裏面yield完畢後,能獲取到responce傳過來的數據。

7.model至關於vue的vuex,裏面包含了但向數據流的全部的控制

8.在vue中咱們通常定義一個全局的頭部標題字段,而且在mounted中調dispatch改變,但在dva的model中這段分爲了兩個部分,其中effects是異步修改數據時調用的, 也就是在react的componentDidMount的生命週期裏面須要調用的是異步的effects的action,但若是是用戶操做的某個方法是,能夠直接調用reducers裏面的action

九、注意若是在組件中要調用dispatch的話,必須導入connect,而且注入,才能夠調用,否則會報不存在的方法

十、dva規定比較強制,若是你是異步的方法必須調用effects的action,絕對不能調用同步的reducers,不然會報錯,但同步的操做能夠調用異步的effects,但由於是異步的操做,數據有時不會直接變過來,若是是操做的話,建議用reducers的同步

11.call:執行異步函數(以異步的方式調用函數)

put:發出一個 Action,相似於 dispatch

select:從state中獲取相關的數據

take 獲取發送的數據

12.須要數據時,是否須要在componentDidMount裏面去請求。

13.query是請求的哪兒

14.延遲加載

1.可否使用@connect({sms})來把model層的數據傳遞到當前組件。經過this.props.sms能夠獲取到model裏sms.js中的state數據)

 

2.流程:dispatch時候models裏面的effect,models中的effect會yield call已經import進來的service裏面的action,而後service裏面,action會調用request,把url和數據傳輸給後臺,而後在models裏面yield完畢後,能獲取到responce傳過來的數據

@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋體"; }@font-face { font-family: "Calibri"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: Calibri; font-size: 10.5pt; }span.msoIns { text-decoration: underline; color: blue; }span.msoDel { text-decoration: line-through; color: red; }div.Section0 { }

相關文章
相關標籤/搜索