在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何理解Redux中subscribe的作用

如何理解Redux中subscribe的作用

學習了Redux的基本使用
自己總結(jié)了以下redux的過程

  1. 使用函數(shù)createStore創(chuàng)建store數(shù)據(jù)點
  2. 創(chuàng)建Reducer。它要改變的組件,它獲取state和action,生成新的state
  3. 用subscribe監(jiān)聽每次修改情況
  4. dispatch執(zhí)行,reducer(currentState,action)處理當前dispatch后的傳入的action.type并返回給currentState處理后的state,通過currentListeners.forEach(v=>v())執(zhí)行監(jiān)聽函數(shù),并最后返回當前 action狀態(tài)

但還是不理解subscribe在redux里面的作用,是觀察store的變化么

export function createStore(reducer) {

let currentState = {}
let currentListeners = []

function getState() {
  return currentState
}

function subscribe(listener) {
  //傳入函數(shù)
  currentListeners.push(listener)
}

function dispatch(action){
  currentState = reducer(currentState,action)
  currentListeners.forEach(v=>v())
  return action
}

//觸發(fā)初始狀態(tài)
dispatch({type:'@TYRMARS/Mars-Redux'})
  return {getState,subscribe,dispatch}
}
回答
編輯回答
負我心

subscribe 這個函數(shù)是用來去訂閱 store 的變化,比如你每次對 store 進行 dispatch(action) 都會觸發(fā) subscribe 注冊的函數(shù)調(diào)用,這個在實際情況不是必須要的,看自己的應用場景,比如你想監(jiān)控 store 的全局變化時 可以用 subscript 訂閱一下,然后作一些反應

你如果實在想弄清楚,他的應用價值 可以先看下 react-reduxconnect 實現(xiàn),里面就應用到了 storesubscribe https://github.com/reactjs/react-redux/blob/master/src/utils/Subscription.js#L69

2017年5月5日 03:47
編輯回答
墨小白

每次通過dispatch 修改數(shù)據(jù)的時候,其實只是數(shù)據(jù)發(fā)生了變化,如果不手動調(diào)用 render方法,頁面上的內(nèi)容是不會發(fā)生變化的。

但是每次dispatch之后都手動調(diào)用很麻煩啊,所以就使用了發(fā)布訂閱模式,監(jiān)聽數(shù)據(jù)變化來自動渲染。

2018年5月9日 02:38