使用antd+redux重寫Todo

1.在src目錄下新建一個index.js文件
文件內容如下:
import React from 'react';
import ReactDOM from 'react-dom';
import TodoList from './TodoList';

ReactDOM.render(<TodoList/>, document.getElementById('root'));

2..在src目錄下新建一個Todolist.js文件是index.js的組件
3.安裝antd依賴 $ npm install antd --save $ yarn add antd
4.引入antd包和需要的組件
import React , { Component } from 'react';
import 'antd/dist/antd.css';
import { Input,Button,List } from 'antd';
import store from './store';

class TodoList extends Component{

    render() {
       return (
             <div style={{marginTop : 80, marginLeft : 500}}>
              <div>
                   <Input placeholder="Todo info"  style={{width : 300,marginRight : 10}}
               
                   />
                   <Button type="primary" >提交</Button>
              </div>
              <List
                    style={{marginTop : 10 , width : 300}}
                    size="small"

                    bordered
                    dataSource={this.state.List}
                    renderItem={(item,index) => (<List.Item >{item}</List.Item>)}
              />
        )
    } 
}

export default TodoList;
5.在src目錄下建立store文件夾
6.在store文件夾下建立index.js文件
7.安裝redux包 yarn add  redux
8.在store文件夾下的index中引入redux 代碼如下:
import { createStore } from 'redux';
import reducer from './reducer';

const store = createStore(reducer, 
    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());

export default store;
9.建立了store數(shù)據倉庫需要reducer文件來操作數(shù)據
10.在store文件夾下建立一個reducer.js文件 代碼如下:
const defaultState = {
    inputValue : "123",
    List : []
}
export default (state = defaultState,action) => {
    return state;
}
11.在TodoList.js文件下引入store文件夾下的index.js文件
import store from './store';
12.在TodoList.js文件中取得store中的數(shù)據
this.state = store.getState();
13.把store中的數(shù)據添加到input的value值上并且改變store中的數(shù)據泛源,并添加上一個onChange的方法
<Input placeholder="Todo info" value={this.state.inputValue} style={{width : 300,marginRight : 10}} 
 onChange = {this.handelInputChange}
14.在handelInputChange方法中發(fā)送action到reducer中來改變input的value值
    handelInputChange (e) {
        const action= {
            type : 'Change_input_value',
            value : e.target.value
        }
        store.dispatch(action);
    }
15.reducer.js文件接收Component發(fā)過來的action來處理數(shù)據
const defaultState = {
    inputValue : "123",
    List : []
}
export default (state = defaultState,action) => {
//注意:reducer可以接收state 但絕對不能修改state只能深拷貝出來
    if(action.type==="Change_input_value"){
        //拷貝state
        const newState = JSON.parse(JSON.stringify(state));
        newState.inputValue = action.value;
        return newState;
    }
    return state;
}
16.當reducer中的條件成立返回一個新的state給store
17.此時store需要把新的數(shù)據給到Component需要用到一個方法
store.subscribe();用這個方法來訂閱store中的數(shù)據拔妥,如果store中的數(shù)據發(fā)送改變將自動執(zhí)行這個函數(shù)
18.把store.subscribe();方法添加到TodoList.js的 constructor中并為其添加一個函數(shù)
 constructor(props) {
  super(props);
store.subscribe(this.handleStoreChange);
}
19.函數(shù)內容如下:
    handleStoreChange() {
        this.setState(store.getState());
    }
20.只要store中的數(shù)據發(fā)生改動,就會調用上面方法來重新渲染DOM
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末俩由,一起剝皮案震驚了整個濱河市毒嫡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幻梯,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件努释,死亡現(xiàn)場離奇詭異碘梢,居然都是意外死亡,警方通過查閱死者的電腦和手機伐蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門煞躬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逸邦,你說我怎么就攤上這事恩沛。” “怎么了缕减?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵雷客,是天一觀的道長。 經常有香客問我桥狡,道長搅裙,這世上最難降的妖魔是什么皱卓? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮部逮,結果婚禮上娜汁,老公的妹妹穿的比我還像新娘。我一直安慰自己兄朋,他們只是感情好掐禁,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颅和,像睡著了一般傅事。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上融虽,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天享完,我揣著相機與錄音,去河邊找鬼有额。 笑死般又,一個胖子當著我的面吹牛,可吹牛的內容都是我干的巍佑。 我是一名探鬼主播茴迁,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼萤衰!你這毒婦竟也來了堕义?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤脆栋,失蹤者是張志新(化名)和其女友劉穎倦卖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椿争,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡怕膛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秦踪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褐捻。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椅邓,靈堂內的尸體忽然破棺而出柠逞,到底是詐尸還是另有隱情,我是刑警寧澤景馁,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布板壮,位于F島的核電站裁僧,受9級特大地震影響个束,放射性物質發(fā)生泄漏慕购。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一茬底、第九天 我趴在偏房一處隱蔽的房頂上張望沪悲。 院中可真熱鬧,春花似錦阱表、人聲如沸殿如。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涉馁。三九已至,卻和暖如春爱致,著一層夾襖步出監(jiān)牢的瞬間烤送,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工糠悯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帮坚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓互艾,卻偏偏與公主長得像试和,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纫普,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容