D3 --- project 添加更改刪除

D3

主要內(nèi)容

  • project 添加頁(yè)面
  • project 編輯頁(yè)面

地址


添加頁(yè)面

本來(lái)我是想去掉原來(lái)的bootstrap用mdl的统翩,但mdl的輸入框真的是不好看迅办,所以還是裝一下bootstrap 吧衩侥,運(yùn)行

npm install react-bootstrap bootstrap

并在index.html中添加

<link
  rel="stylesheet"
  
  integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
  crossorigin="anonymous"
/>

然后給ProjectContainer加個(gè)屬性決定是要顯示還是編輯阁将,并把添加頁(yè)面配置到路由里匀油。

<Route path="/projects/add" component={ProjectContainer} mode='add' />

然后就可以寫ProjectCreator了锐极,基本還是前面的一整套盒齿,但因?yàn)閟tore已經(jīng)有了沮峡,只需要更新reducer疚脐、action、api就可以了邢疙。

Reducer

其實(shí)reducer并不需要改棍弄,因?yàn)閜roject和projects是兩個(gè)不同的store,所以當(dāng)編輯完成通過(guò)保存或放棄退回到projects時(shí)疟游,頁(yè)面總是會(huì)重新fetch一下數(shù)據(jù)呼畸,獲取到與數(shù)據(jù)庫(kù)同步的數(shù)據(jù)并顯示。

Action

action還是分begin颁虐、success蛮原、error。

  • begin的時(shí)候要帶著從用戶處獲取的要保存到數(shù)據(jù)庫(kù)的數(shù)據(jù)另绩,payload帶project儒陨。
  • success之后因?yàn)橐D(zhuǎn),所以什么都不用做笋籽。
  • 出錯(cuò)后只要把出錯(cuò)的信息輸出一下就好了蹦漠,所以payload帶error。

API

create的話就是post到后端就可以了车海。

return dispatch => {

    dispatch( createProjectBegin(project) );
    return fetch(`${api_url}`,{
        method : 'POST',
        headers : API_HEADERS,
        body : JSON.stringify(project)
    })
    .then(handleErrors)
    .then(() => {
        dispatch( createProjectSuccess() );
    })
    .catch(error => dispatch( createProjectError(error) ));
    
}

Component

之前說(shuō)過(guò)了笛园,表單用bootstrap寫,然后因?yàn)槲也淮髸?huì)用form-submit那樣的,所以我還是用onChange + onClick這種的形式研铆。所以component要維護(hù)一個(gè)project 狀態(tài)埋同,當(dāng)輸入框狀態(tài) 變化時(shí)要更新?tīng)顟B(tài),所以這里用到另外一個(gè)工具react-addons-update棵红。

其實(shí)就是一個(gè)用來(lái)copy對(duì)象維持狀態(tài)的不可變性的凶赁,我用的原因也只是怕踩到關(guān)于狀態(tài)更新的坑吧。然后寫handleChange函數(shù)

import update from 'react-addons-update';

handleChange(e) {

    let {name, value} = e.target;

    const { project } = this.state;
    const newProject = update(project, {$merge : {[name] : value}});

    this.setState({
        project: newProject
    });
}

然后提交的時(shí)候就直接從組件狀態(tài)中獲取project逆甜,調(diào)用API的相關(guān)函數(shù)就可以了哟冬。同樣的,我不想貼component的代碼了忆绰,而且這一版的界面看起來(lái)也好奇怪啊浩峡,我之后可能還要改一改,大概的樣子是

project create

刪除項(xiàng)目

  • 出于與添加相同的原因错敢,刪除也不需要修改reducer
  • API里增加刪除的函數(shù)
  • action里增加刪除的action翰灾。
    • begin : 帶projectId
    • success : 啥都不帶
    • error : 帶error
  • 沒(méi)有component

更新項(xiàng)目

  • reducer也不改
  • API里增加更新的函數(shù)
  • action里增加更新的函數(shù)
    • begin : 帶項(xiàng)目id和新項(xiàng)目
    • success : 啥都不帶
    • error : 帶error和就項(xiàng)目
  • component跟creator一樣, 只是帶默認(rèn)值

BUG: : 以當(dāng)前的邏輯稚茅,只有當(dāng)用戶從顯示頁(yè)面進(jìn)入更新頁(yè)面時(shí)才會(huì)出現(xiàn)默認(rèn)值纸淮,通過(guò)url訪問(wèn)時(shí)不會(huì)出現(xiàn)默認(rèn)值,之后的blog部分我應(yīng)該會(huì)選擇使用狀態(tài)改變而不是頁(yè)面跳轉(zhuǎn)的方式控制更新與顯示狀態(tài)亚享。

后續(xù)::明天開(kāi)始我會(huì)開(kāi)始做后端了吧咽块,因?yàn)閎log跟project基本一模一樣,都是獲取數(shù)據(jù)欺税,然后增刪查改侈沪,所以就不重復(fù)地寫兩天廢話了。明天開(kāi)始面向project做一個(gè)REST API晚凿,接起來(lái)整個(gè)項(xiàng)目就差不多了吧(后面可能還有些樣式修改什么的)亭罪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市歼秽,隨后出現(xiàn)的幾起案子应役,更是在濱河造成了極大的恐慌,老刑警劉巖燥筷,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箩祥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肆氓,警方通過(guò)查閱死者的電腦和手機(jī)袍祖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)做院,“玉大人盲泛,你說(shuō)我怎么就攤上這事〖” “怎么了寺滚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屈雄。 經(jīng)常有香客問(wèn)我村视,道長(zhǎng),這世上最難降的妖魔是什么酒奶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任蚁孔,我火速辦了婚禮,結(jié)果婚禮上惋嚎,老公的妹妹穿的比我還像新娘杠氢。我一直安慰自己,他們只是感情好另伍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布鼻百。 她就那樣靜靜地躺著,像睡著了一般摆尝。 火紅的嫁衣襯著肌膚如雪温艇。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天堕汞,我揣著相機(jī)與錄音勺爱,去河邊找鬼。 笑死讯检,一個(gè)胖子當(dāng)著我的面吹牛琐鲁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播人灼,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绣否,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挡毅?” 一聲冷哼從身側(cè)響起蒜撮,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跪呈,沒(méi)想到半個(gè)月后段磨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耗绿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年苹支,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误阻。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债蜜,死狀恐怖晴埂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寻定,我是刑警寧澤儒洛,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站狼速,受9級(jí)特大地震影響琅锻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜向胡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一恼蓬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧僵芹,春花似錦处硬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至攀痊,卻和暖如春桐腌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苟径。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工案站, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棘街。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓蟆盐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親遭殉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子石挂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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