React.js之Flux設(shè)計(jì)思路的ALT模式

1.簡(jiǎn)介

Flux是一種用于構(gòu)建復(fù)雜用戶界面的應(yīng)用程序架構(gòu)女揭。它避開(kāi)MVC而支持單向數(shù)據(jù)流。這意味著數(shù)據(jù)通過(guò)一個(gè)操作(actions)進(jìn)入栏饮,然后通過(guò)其狀態(tài)管理器(store)向外流動(dòng)吧兔,最后流向視圖(view)。然后抡爹,視圖可以通過(guò)響應(yīng)用戶輸入調(diào)用其他操作來(lái)重新啟動(dòng)流掩驱。

2.安裝使用

npm install --save ?alt

3.文件夾結(jié)構(gòu)

your_project

|--actions/

|???? |--MyActions.js

|--stores/

|???? |--MyStore.js

|--components/

|???? |--MyComponent.jsx

|--alt.js

|--app.js

4.應(yīng)用步驟

簡(jiǎn)單來(lái)講就是4步

《1.創(chuàng)建view,并且在view里監(jiān)聽(tīng)store的變化冬竟;

《2.在view里欧穴,調(diào)用相應(yīng)actions,在actions里處理相應(yīng)邏輯泵殴,使用dispatcher把結(jié)果發(fā)送給store涮帘;

《3.在store里,做相應(yīng)處理笑诅,儲(chǔ)存數(shù)據(jù)调缨;

《4.view監(jiān)聽(tīng)到store有變化,調(diào)用this.setState()或this.forceUpdate()觸發(fā)render()吆你,在render()里根據(jù)不同的state渲染不同的界面弦叶;

5.具體過(guò)程

《1.創(chuàng)建 actions:通過(guò)創(chuàng)建一個(gè)類來(lái)創(chuàng)建一個(gè)action,該類的原型方法將成為動(dòng)作妇多。類語(yǔ)法是完全可選的伤哺,可以使用常規(guī)構(gòu)造函數(shù)和原型。在這些操作中,可以使用this.dispatch通過(guò)Dispatcher將有效負(fù)載分配到store立莉。最后绢彤,確保使用導(dǎo)出已創(chuàng)建的操作alt.createActions;

var alt = require('../alt');

class LocationActions {

?????updateLocations(locations) {?

?????????return locations;?

?????}

}

module.exports = alt.createActions(LocationActions);

《2.創(chuàng)建store:store數(shù)據(jù)倉(cāng)庫(kù)蜓耻。這是應(yīng)用程序狀態(tài)的特定部分的唯一真實(shí)來(lái)源茫舶。與actions類似,為store創(chuàng)建一個(gè)類刹淌。

class LocationStore {?

?????constructor() {?

? ??????????this.locations = [];?

?????????????this.bindListeners({

?????????????????????handleUpdateLocations:LocationActions.UPDATE_LOCATIONS饶氏;

????????????});

?????}

handleUpdateLocations(locations) { this.locations = locations; }

}

module.exports = alt.createStore(LocationStore, 'LocationStore');

《3.創(chuàng)建view:監(jiān)聽(tīng)store并從中獲取數(shù)據(jù)

將狀態(tài)從store中取出很簡(jiǎn)單,每個(gè)alt的store都有一個(gè)返回其狀態(tài)的方法芦鳍。返回時(shí)嚷往,狀態(tài)將作為值復(fù)制,我們可以使用React 的getInitialState來(lái)重置store的狀態(tài)并設(shè)置初始狀態(tài)柠衅;

getInitialState() {?

?????return LocationStore.getState();

},

但是,一旦store中的狀態(tài)更新籍琳,我們就會(huì)想要監(jiān)聽(tīng)更改菲宴。在react組件中,componentDidMount可以使用添加事件監(jiān)聽(tīng)處理程序LocationStore.listen趋急,同時(shí)可使用componentWillUnmount() 來(lái)刪除事件監(jiān)聽(tīng)器

componentDidMount() {?

?????LocationStore.listen(this.onChange);

},

componentWillUnmount() {

?????LocationStore.unlisten(this.onChange);

},

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喝峦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呜达,更是在濱河造成了極大的恐慌谣蠢,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件查近,死亡現(xiàn)場(chǎng)離奇詭異眉踱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)霜威,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)谈喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人戈泼,你說(shuō)我怎么就攤上這事婿禽。” “怎么了大猛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵扭倾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挽绩,道長(zhǎng)膛壹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮恢筝,結(jié)果婚禮上哀卫,老公的妹妹穿的比我還像新娘。我一直安慰自己撬槽,他們只是感情好此改,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著侄柔,像睡著了一般共啃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暂题,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天移剪,我揣著相機(jī)與錄音,去河邊找鬼薪者。 笑死纵苛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的言津。 我是一名探鬼主播攻人,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悬槽!你這毒婦竟也來(lái)了怀吻?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤初婆,失蹤者是張志新(化名)和其女友劉穎蓬坡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體磅叛,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屑咳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宪躯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乔宿。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖访雪,靈堂內(nèi)的尸體忽然破棺而出详瑞,到底是詐尸還是另有隱情,我是刑警寧澤臣缀,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布坝橡,位于F島的核電站,受9級(jí)特大地震影響精置,放射性物質(zhì)發(fā)生泄漏计寇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望番宁。 院中可真熱鬧元莫,春花似錦、人聲如沸蝶押。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棋电。三九已至茎截,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赶盔,已是汗流浹背企锌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留于未,地道東北人撕攒。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烘浦,于是被迫代替她去往敵國(guó)和親打却。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)單來(lái)講就是4步 1.創(chuàng)建view谎倔,并且在view里監(jiān)聽(tīng)store的變化 2.在view里,調(diào)用相應(yīng)actions...
    Jason景閱讀 1,049評(píng)論 0 1
  • 【微公益】【870】【每日經(jīng)典】【20170911易經(jīng)10】 履卦 (天澤履)乾上兌下 《履》:履虎尾猿推,不咥人片习。亨...
    北冥_鯤閱讀 434評(píng)論 2 5
  • 基本信息 【拍攝設(shè)備】:iPhone7+魚(yú)眼鏡頭【拍攝地點(diǎn)】:公園【拍攝時(shí)間】:2017-5-21 11:00【后...
    閱修悟律閱讀 161評(píng)論 2 1
  • 減重。 隱忍蹬叭。 豐富藕咏。 堅(jiān)持。
    樸素少年_大美閱讀 68評(píng)論 0 0
  • 越來(lái)越不喜歡寫(xiě)東西了秽五,或者說(shuō)不喜歡把東西發(fā)到空間上去孽查。因?yàn)槲以絹?lái)越不自信了,上大學(xué)的時(shí)候還會(huì)有人跟你一起做夢(mèng)坦喘,現(xiàn)在...
    夸父真熱閱讀 404評(píng)論 0 0