一起學react (1) 10分鐘 讓你dva從入門到精通

前言

如果文章中有錯誤的地方的話 可以直接加我QQ:469373256

自己針對一些問題做的優(yōu)化版本 目前剛啟動 還不是很成熟

https://github.com/fangkyi03/fastkit-dva.git

麻煩大家加星鼓勵一下 謝謝

原有的項目從碼云移植到了github

新的地址:https://github.com/fangkyi03/react-demo

一起學react(2) dva底層源碼與案例分析 - 簡書

本人自己修改后的dva版本 增加了對網絡處理的控制

https://github.com/fangkyi03/dvajs

詳細的具體說明在github上 覺得好的麻煩加星鼓勵一下

GitHub - fangkyi03/nextjs-antd-dva-template: 最優(yōu)的nextjs antd dva 服務端解決方案

自己修改的最優(yōu)ssr nextjs 服務端渲染例子 開箱即用 解決了你可能遇到的所有問題

技術資料

react + dva + redux + react-router + redux-sage + antd + antd動畫

總的來說dva是一個很簡單的項目 一步步跟大家來說一下把


效果圖


初始化環(huán)境配置

因為項目中使用了antd的關系 所以 這邊需要做一下設置 才可以正常使用

文件名稱是:.roadhogrc

目錄結構


初始化dva

初始化部分 非常簡單 首先一個個來說明一下

1.const app = dva()

這部分是用來做dva初始化的部分 先給大家看一下完整的接口

在這里 你可以設置全局state 全部error 還有包括router的事件 state的事件 等等?

都可以直接統(tǒng)一的在這邊進行設置與管理

還有history這個參數是從react-router中來的

相關地址:react-router?dva初始化

2.app.use

這個是用來加載插件的 因為我這個項目沒用到什么其他的redux第三方中間件 所以這邊直接忽略


3.app.model

這個是用來接收你發(fā)送的action的

相關鏈接:model

4.app.router

在這里面 進行你所有頁面的初始化路由設置

這里有兩種寫法

寫法1:

寫法2:

下面這種是按需加載的 所有 性能會比上面的那種 要高很多 尤其是你的頁面比較重的時候

ok初始化部分全部講完了 現在來看看ui部分

UI代碼


這個是我的一個完全簡化版 不含里面的內容 因為UI部分 我想搞前端的人 應該都會 所以就來講點跟dva有關系的

我想 如果沒有接觸過這種寫法的人 肯定會感覺很納悶吧 這是啥招 不知道在干嗎啊 來看看 說明

首先說一下 這個寫法的優(yōu)點跟缺點

優(yōu)點:

因為這樣寫的話 就是一個function 所以react在判斷的時候 會直接省略生命周期的部分 從而 可以大大的加快加載速度

缺點:

缺點就是 你無法使用this,也沒有辦法使用生命周期?

所以 如果你的頁面 必須要使用生命周期的話 還是用class吧?

connect

這個其實很好理解

如果說你的ui里面需要用到model里面的數據的話 那么就可以直接用這個 將model里面的元素 當做props的方式 傳遞進來

如果你只想接管一個app的model的話

connect(({app}) => ({app})

如果你想接管多個 直接在app后面添加即可

至于另外的form.create部分 因為這里使用到了一個antd的表單組件

所以需要用form.create的方式 將里面的內容以props的方式 傳遞進去

相關文章:antd表單組件


登錄

因為我們是一個表單登錄頁面 所以 當我們點擊登錄的時候 需要發(fā)送一條dispatch給model那邊 然后通過他來實現頁面的跳轉

先來看看如何發(fā)送數據

因為使用了antd的關系 所以表單部分 可以說是被無限的弱化了 你現在 不需要關心任何事情 他都會幫你搞定 具體相關的api 可以看上面發(fā)的那個鏈接

來看看消息發(fā)送的部分

這里其實 很簡單 因為antd已經幫我們做了處理 我們可以在他們提供的表單組件中 進行相關的配置 而所有的數據 他都會通過這個來直接返回過來

所以我們只需要在這邊進行一下判斷即可 如果產生了錯誤就直接返回?

否則執(zhí)行dispatch 發(fā)送一條action給對應的model那邊 然后在那邊做出相應的判斷

model部分


首先 一般介紹的文章都會寫的很詳細 但是對于新手來說 有可能會無從下手?

所以 我們在接觸到我們不熟悉的東西的時候 最好能用自己習慣的一種語言去解釋他 這樣也方便學習 按功能 我們依次下來

reducers 處理數據

effects ? 接收數據

subscriptions 監(jiān)聽數據

通過這樣的解釋是不是稍微能對其有個大概的了解 每個都是按照功能分類的 所以 盡量 不要在不歸他管的地方 做其他的事情

還記得 我們剛才發(fā)送數據的那個命令嗎 我們在來看一下

dispatch 是根據你里面設置的type內容 然后轉發(fā)到指定的model的 所以你這邊 要設置正確以后 在model那邊才能接收到你發(fā)送的這條action


login就是我們處理接收消息的地方

在這里 又遇見了幾個新的單詞 put call

其實 不止這幾個?

一般常用的有put call select take?

當然 在這個上面 還有一些基于這些函數 封裝的高階函數

相關文章:github.com/dvajs/dva/blob/master/test/effects-test.js

簡單來說一下 這幾個函數的大概內容

put ?用來發(fā)起一條action

call 以異步的方式調用函數

select 從state中獲取相關的數據

take 獲取發(fā)送的數據

當我們使用put發(fā)送一條action的時候 與之對于的reducers就會接收到這個消息 然后在里面返回state等數據

這里有一點 reducers中盡量只做state的數據返回 而不要在這里寫相關的邏輯

對于路由跳轉的部分 我們使用這樣來實現

當我們執(zhí)行這個命令的時候 因為我們的router已經相互綁定起來了 所以他會自動調用router中的數據來進行展示


ok 總體就這么多吧 是不是感覺很簡單

我自己個人覺得 毫無難點 入門簡直 不要太方便

我相信 只要仔細看完我所有寫的 dva的所有功能都將可以掌握

如果有問題的話 可以加我QQ:469373256

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子拯田,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件濒募,死亡現場離奇詭異鞭盟,居然都是意外死亡,警方通過查閱死者的電腦和手機瑰剃,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門齿诉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晌姚,你說我怎么就攤上這事粤剧。” “怎么了挥唠?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵抵恋,是天一觀的道長。 經常有香客問我宝磨,道長弧关,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任唤锉,我火速辦了婚禮世囊,結果婚禮上,老公的妹妹穿的比我還像新娘窿祥。我一直安慰自己株憾,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布晒衩。 她就那樣靜靜地躺著嗤瞎,像睡著了一般墙歪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猫胁,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天箱亿,我揣著相機與錄音,去河邊找鬼弃秆。 笑死届惋,一個胖子當著我的面吹牛,可吹牛的內容都是我干的菠赚。 我是一名探鬼主播脑豹,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼衡查!你這毒婦竟也來了瘩欺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拌牲,失蹤者是張志新(化名)和其女友劉穎俱饿,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體塌忽,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡拍埠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了土居。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枣购。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖擦耀,靈堂內的尸體忽然破棺而出棉圈,到底是詐尸還是另有隱情,我是刑警寧澤眷蜓,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布分瘾,位于F島的核電站,受9級特大地震影響吁系,放射性物質發(fā)生泄漏芹敌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一垮抗、第九天 我趴在偏房一處隱蔽的房頂上張望氏捞。 院中可真熱鬧,春花似錦冒版、人聲如沸液茎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捆等。三九已至滞造,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栋烤,已是汗流浹背谒养。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留明郭,地道東北人买窟。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像薯定,于是被迫代替她去往敵國和親始绍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容