關(guān)于React-Redux

React

React是單向數(shù)據(jù)流,沒有數(shù)據(jù)向上回溯的能力,只能向下分發(fā)

  • React中有props和state

props是父級傳過來的屬性

// 父組件
  _hideAddress = () => {
    console.log('o')
  }
  <ModifyAddress
    hideAddress={this._hideAddress}
  />
// 子組件
  <Modal
    onClick={this.props.hideAddress}
  />

state是組件內(nèi)部自行管理的狀態(tài)

  this.state = {
    visible: false,
  }

  this.setState({
    visible: true,
  })
  • 隨著業(yè)務(wù)邏輯的增加,就會發(fā)現(xiàn)React無法讓兩個組件之間相互交流,拿到對方的數(shù)據(jù)

  • 這個時候就只能將state放到公用的父組件中來管理,然后通過props分發(fā) ==> reducer

  • 而子組件去改變父組件的state,只能通過onClick觸發(fā)父組件聲明好的回調(diào),
    也就是說父組件需要提前聲明好函數(shù)或方法描述state將如何改變,再將它作為屬性傳給子組件 ==> action

  • 這樣就可以想到一個方法,將所有的state放在頂層統(tǒng)一維護,然后分發(fā)給所有的組件


Redux

Redux就作為一個專業(yè)的頂層將state分發(fā)給所有的組件

  • action 聲明式的數(shù)據(jù)結(jié)構(gòu),只提供事件的所有要素杀赢,不提供邏輯
  • Redux 中只需把 action 創(chuàng)建函數(shù)的結(jié)果傳給 dispatch() 方法即可發(fā)起一次 dispatch 過程
// action
const addTodo = (text) = {
    type: 'ADD_TODO',
    text
  }
dispatch(addTodo('new text'))
  • reducer 根據(jù)傳入的 當前state 和 action , 返回一個新的 state
  • action 只是描述事情發(fā)生了,而沒有說明如何更新state,這就是reducer要做的事情
// 引入action
    import { todoApp } from './actions'
// 初始化 state
    const initialState = {
      text: ''
    }
// 現(xiàn)在可以處理 ADD_TODO力崇。需要做的只是改變 state 中的 text
    const todoApp = (state = initialState, action) = {
      switch (action.type) {
        case 'ADD_TODO':
          return { ...state, text}
        default:
          return state
      }
    }
// 需要注意的是:
// 1. 不要改變state.
// 2. 如果遇到未知的action,返回久的state
  • store 通過dispatch(action)來更新state

React-Redux

一般不會直接把這兩個庫直接拿來用,而是用react-redux

react-redux提供一個Providerconnect**

  • Provider是一個普通組件,可以作為app的分發(fā)點,只要有store屬性就可以了,他會將state分發(fā)給所有被connect的組件

export default connect(mapStateToProps, mapDispatchToProps)(ComponentName)

  • connect先接受兩個參數(shù)數(shù)據(jù)綁定(mapStateToProps)事件綁定(mapDispatchToprops)再接收一個將要綁定的組件

mapStateToProps 你需要綁定一個函數(shù),它的參數(shù)是state,返回你想要的幾個值

const mapStateToProps = (state) => {
  return {
    newText: state.todoApp.text,
  }
}

mapDispatchToProps 聲明好的action作為回調(diào),它的參數(shù)是dispatch

// 綁定所有action以及參數(shù)的dispatch廉羔,可以作為屬性在組件里面使用
const mapDispatchToProps = (dispatch) => ({
  dispatch
})
// 在組件中使用
this.props.dispatch(action(addTodo()))



最后

有不對的地方還請指出

謝謝啦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛔六,一起剝皮案震驚了整個濱河市磷蜀,隨后出現(xiàn)的幾起案子轴捎,更是在濱河造成了極大的恐慌鹤盒,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侦副,死亡現(xiàn)場離奇詭異侦锯,居然都是意外死亡,警方通過查閱死者的電腦和手機秦驯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門尺碰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人译隘,你說我怎么就攤上這事亲桥。” “怎么了固耘?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵题篷,是天一觀的道長。 經(jīng)常有香客問我玻驻,道長悼凑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任璧瞬,我火速辦了婚禮户辫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗤锉。我一直安慰自己渔欢,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布瘟忱。 她就那樣靜靜地躺著奥额,像睡著了一般。 火紅的嫁衣襯著肌膚如雪访诱。 梳的紋絲不亂的頭發(fā)上垫挨,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音触菜,去河邊找鬼九榔。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哲泊。 我是一名探鬼主播剩蟀,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼切威!你這毒婦竟也來了育特?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤先朦,失蹤者是張志新(化名)和其女友劉穎缰冤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烙无,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡锋谐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了截酷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涮拗。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖迂苛,靈堂內(nèi)的尸體忽然破棺而出三热,到底是詐尸還是另有隱情,我是刑警寧澤三幻,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布就漾,位于F島的核電站,受9級特大地震影響念搬,放射性物質(zhì)發(fā)生泄漏抑堡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一朗徊、第九天 我趴在偏房一處隱蔽的房頂上張望首妖。 院中可真熱鬧,春花似錦爷恳、人聲如沸有缆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚壁。三九已至,卻和暖如春栈虚,著一層夾襖步出監(jiān)牢的瞬間袖外,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工魂务, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留在刺,地道東北人逆害。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像蚣驼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子相艇,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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