解析SkyBlog中store中存儲的state

說到state,我們肯定從Reducer入手圾叼,先來看下AppReducer

const AppReducer = combineReducers({
    navigation : NavigationReducer,
    articles : ArticlesReducer,
    content : ContentReducer,
    upload : UploadReducer,
    login : LoginReducer,
    users : UsersReducer,
    classify : ClassifyReducer,
    about : AboutReducer,
    msg : MsgBoardReducer,
    github : GithubReducer,
    sys_log : SysLogReducer,
    form : formReducer,
    router: routerReducer,
    notifications: notificationsReducer()
});

除了倒數(shù)3個分別是redux-form蛤克、react-router-reduxreapop提供的Reducer夷蚊,其他均是項目本身的Reducer构挤,存儲著頁面中所有的數(shù)據(jù)。

Navigation State

存儲了項目中使用的所有Modal的顯示狀態(tài)惕鼓,當然默認全是false啦筋现。

const initialState = {
    modal : {
        loginModal_show : false,
        registerModal_show : false,
        userInfoModal_show : false,
        userManagementModal_show : false,
        sysLogModal_show : false
    }
};

Login State

登錄相關(guān)的state,是非常重要的state呜笑,存儲了

  1. 登錄是否成功
  2. 登錄用戶信息
  3. 還有是否開啟管理模式的信息

其中這個management便是SkyBlog實現(xiàn)閱讀與管理合一的核心夫否。

const initialUser = {
    id: 0,
    username : "",
    nickname : "",
    admin : false
};

const initialState = {
    ok : null,
    message : null,
    management : false,
    user : initialUser
};

Articles State - 文章列表

存儲了文章和分類文章的分頁信息

其中loading屬性在之后不少地方也有出現(xiàn),這個屬性是實現(xiàn)加載中的屬性

const initialClassify = {
    loading: true,
    id : 0,
    name : "",
    page : {
        list : [],
        page_num : 1,
        pages : 0,
        total : 0,
    }
};

const initialState = {
    page : {
        list : [],
        page_num : 1,
        pages : 0,
        total : 0,
    },
    loading: true,
    classify : initialClassify
};

Classify State - 文章分類

存儲分類信息叫胁,/articles的右側(cè)導航欄數(shù)據(jù)便出自于此

show則是編輯器用于判斷是否顯示新增分類的屬性

const initialState = {
    list : [],
    show : false
};

Content State - 文章內(nèi)容

整個項目最重的一個state凰慈,也是博客的核心——文章頁面的state,存儲了

  1. 文章信息
  2. 文章下的評論列表
  3. 選擇回復的評論
export const initialArticle = {
    id : 0,
    title : "文章標題",
    sub_title : "文章副標題",

    classify : {
        id : 1,
        name : "未分類"
    },
    classify_id : 1,

    content : {
        text: "#### 文章內(nèi)容\n`Markdown編輯器`",
        selection: null
    }
};

const initialComments = {
    list : [],
    page_num : 1,
    pages : 0,
    total : 0
};

export const initialPreviousComment = {
    id : 0,
    author : {
        id : 0,
        nickname : ""
    },
    content : ""
};

const initialState = {
    comments : initialComments,
    comments_loading : true,

    article : initialArticle,
    article_loading: true,

    previous_comment : initialPreviousComment
};

Upload State - 上傳

存儲了上傳文件Modal的顯示驼鹅、服務器訪問的信息

const initialState = {
    uploadModal_show : false,
    response : {
        ok : null,
        message : null,
        url : ""
    }
};

About State - 關(guān)于

存儲了關(guān)于的信息

const initialState = {
    content : {
        text: "",
        selection: null
    },
    loading : true
};

MsgBoard State - 留言板

存儲了留言列表微谓、選擇回復的留言的信息

const initialState = {
    page : {
        list : [],
        page_num : 1,
        pages : 0,
        total : 0
    },
    loading : true,
    previous_comment : initialPreviousComment
};

Users State - 用戶

存儲了用戶列表的信息,只在UserManagementModal顯示

const initialState = {
    list : [],
    page_num : 1,
    pages : 0,
    total : 0,
};

Github State - SkyBlog動態(tài)

存儲了SkyBlog的項目Commits信息

const initialState = {
    commits : [],
    loading : true
};

SysLog State - 系統(tǒng)日志

存儲了系統(tǒng)日志列表的信息输钩,只在SysLogModal顯示

const initialState = {
    list : [],
    page_num : 1,
    pages : 0,
    total : 0,
};

以上便是項目中存儲的State豺型,然后還有三個第三方State:

  1. react-router-redux - 存儲路由信息
  2. redux-form - 存儲表單信息
  3. notifications - 通知系統(tǒng)reapop存儲的信息

以上便是項目中ViewModel中存儲的信息啦,不得不說Redux可以說是SkyBlog的MVP买乃,沒有狀態(tài)管理工具估計要寫半天上下文的代碼姻氨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剪验,隨后出現(xiàn)的幾起案子肴焊,更是在濱河造成了極大的恐慌,老刑警劉巖功戚,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娶眷,死亡現(xiàn)場離奇詭異,居然都是意外死亡啸臀,警方通過查閱死者的電腦和手機届宠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豌注,你說我怎么就攤上這事伤塌。” “怎么了幌羞?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵寸谜,是天一觀的道長。 經(jīng)常有香客問我属桦,道長熊痴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任聂宾,我火速辦了婚禮果善,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘系谐。我一直安慰自己巾陕,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布纪他。 她就那樣靜靜地躺著鄙煤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茶袒。 梳的紋絲不亂的頭發(fā)上梯刚,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音薪寓,去河邊找鬼亡资。 笑死,一個胖子當著我的面吹牛向叉,可吹牛的內(nèi)容都是我干的锥腻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼母谎,長吁一口氣:“原來是場噩夢啊……” “哼瘦黑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奇唤,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤供璧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冻记,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡来惧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年冗栗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡隅居,死狀恐怖钠至,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胎源,我是刑警寧澤棉钧,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站涕蚤,受9級特大地震影響宪卿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜万栅,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一佑钾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烦粒,春花似錦休溶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徒役,卻和暖如春孽尽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廉涕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工泻云, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狐蜕。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓宠纯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親层释。 傳聞我的和親對象是個殘疾皇子婆瓜,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • 學習必備要點: 首先弄明白,Redux在使用React開發(fā)應用時贡羔,起到什么作用——狀態(tài)集中管理 弄清楚Redux是...
    賀賀v5閱讀 8,880評論 10 58
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,756評論 25 707
  • Redux對于React程序是可有可無的嗎?當你認識到Redux在編程時給你那種可以掌控一切狀態(tài)能力的時候,你會覺...
    smartphp閱讀 946評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理廉白,服務發(fā)現(xiàn),斷路器乖寒,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 山娃_96e5閱讀 245評論 0 1