国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

動手實現一個最簡單的redux

xiguadada / 2144人閱讀

摘要:原文地址的主要集中在函數返回值中,以下這個迷你的只簡單實現方法,如下測試代碼運行結果

原文地址:https://github.com/huruji/blog/issues/1

redux的主要API集中在createStore函數返回值中,以下這個迷你的redux只簡單實現createStore、dispatch、subscribe、getState方法,如下:

const createStore = function(reducer, initialState){
  let currentState = undefined;
  if(initialState) {
    currentState = initialState;
  }
  let currentReducer = reducer;
  let listeners = [];
  return {
    getState() {
      return currentState;
    },
    dispatch(action) {
      if(!currentState){
        currentState = currentReducer(currentState, action);
      }
      currentState = currentReducer(currentState, action);
      listeners.forEach((item) => {
        item();
      });
      return this;
    },
    subscribe(fn) {
      listeners.push(fn);
    }
  }
};

測試代碼:

let reducer = function(state, action) {
  if(!state) {
    return {counter: 0};
  }
  switch(action.type) {
    case "ADD":
      return {counter: state.counter+1};
    case "DEL":
      return {counter: state.counter-1};
    default:
      return state;
  }
};
let store = createStore(reducer);

store.subscribe(function(){
  console.log("before1")
});
store.subscribe(function() {
  console.log("before2")
});

store.dispatch({
  type:"ADD"
});
console.log(store.getState());
store.dispatch({
  type: "ADD"
});
console.log(store.getState());
store.dispatch({
  type: "DEL"
});
console.log(store.getState());

運行結果:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91435.html

相關文章

  • 寫一本關于 React.js 小書

    摘要:因為工作中一直在使用,也一直以來想總結一下自己關于的一些知識經驗。于是把一些想法慢慢整理書寫下來,做成一本開源免費專業簡單的入門級別的小書,提供給社區。本書的后續可能會做成視頻版本,敬請期待。本作品采用署名禁止演繹國際許可協議進行許可 React.js 小書 本文作者:胡子大哈本文原文:React.js 小書 轉載請注明出處,保留原文鏈接以及作者信息 在線閱讀:http://huzi...

    Scorpion 評論0 收藏0
  • 動手實現 redux

    摘要:動手實現實現這個模塊直接創建的函數考慮到要暴露出去的三個函數我們用函數內部的變量來存儲我們的數據時候直接返回當前的值就可以了同樣用內部變量來存儲訂閱者訂閱者則由函數添加返回取消訂閱的函數。則根據返回新的同時通知訂閱者執行相關邏輯。 文章地址 實例回顧 showImg(https://segmentfault.com/img/bVXtft?w=640&h=320); 假如按鈕和界面不在同...

    Barrior 評論0 收藏0
  • 前端空間 - 收藏集 - 掘金

    摘要:封裝手寫的方筆記使用檢測文件前端掘金副標題可以做什么以及使用中會遇到的坑。目的是幫助人們用純中文指南實現復選框中多選功能前端掘金作者緝熙簡介是推出的一個天挑戰。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測試框架 Chai.js 源碼貢獻者之一,Chai.js 中會遇到很多異常處理...

    you_De 評論0 收藏0
  • 前端空間 - 收藏集 - 掘金

    摘要:封裝手寫的方筆記使用檢測文件前端掘金副標題可以做什么以及使用中會遇到的坑。目的是幫助人們用純中文指南實現復選框中多選功能前端掘金作者緝熙簡介是推出的一個天挑戰。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測試框架 Chai.js 源碼貢獻者之一,Chai.js 中會遇到很多異常處理...

    lwx12525 評論0 收藏0
  • 面試題目別有洞天 -> 從es6優雅解法,到降級polyfill,再到redux reduce

    摘要:每次被執行時,和被傳入,這個根據進行累加或者是自身消減,英文原意,進而返回最新的。 之前的一篇文章:從一道面試題,到我可能看了假源碼討論了bind方法的各種進階Pollyfill,今天再分享一個有意思的題目。 從解這道題目出發,我會談到數組的Reduce方法,ES6特性和Redux數據流框架中Reducer的命名等等。一道典型的題目,卻如唐代詩人章碣《對月》詩中所云:別有洞天三十六,水...

    econi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<