摘要:原文地址的主要集中在函數(shù)返回值中,以下這個(gè)迷你的只簡(jiǎn)單實(shí)現(xiàn)方法,如下測(cè)試代碼運(yùn)行結(jié)果
原文地址:https://github.com/huruji/blog/issues/1
redux的主要API集中在createStore函數(shù)返回值中,以下這個(gè)迷你的redux只簡(jiǎn)單實(shí)現(xiàn)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); } } };
測(cè)試代碼:
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());
運(yùn)行結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91435.html
摘要:因?yàn)楣ぷ髦幸恢痹谑褂?,也一直以來想總結(jié)一下自己關(guān)于的一些知識(shí)經(jīng)驗(yàn)。于是把一些想法慢慢整理書寫下來,做成一本開源免費(fèi)專業(yè)簡(jiǎn)單的入門級(jí)別的小書,提供給社區(qū)。本書的后續(xù)可能會(huì)做成視頻版本,敬請(qǐng)期待。本作品采用署名禁止演繹國(guó)際許可協(xié)議進(jìn)行許可 React.js 小書 本文作者:胡子大哈本文原文:React.js 小書 轉(zhuǎn)載請(qǐng)注明出處,保留原文鏈接以及作者信息 在線閱讀:http://huzi...
摘要:動(dòng)手實(shí)現(xiàn)實(shí)現(xiàn)這個(gè)模塊直接創(chuàng)建的函數(shù)考慮到要暴露出去的三個(gè)函數(shù)我們用函數(shù)內(nèi)部的變量來存儲(chǔ)我們的數(shù)據(jù)時(shí)候直接返回當(dāng)前的值就可以了同樣用內(nèi)部變量來存儲(chǔ)訂閱者訂閱者則由函數(shù)添加返回取消訂閱的函數(shù)。則根據(jù)返回新的同時(shí)通知訂閱者執(zhí)行相關(guān)邏輯。 文章地址 實(shí)例回顧 showImg(https://segmentfault.com/img/bVXtft?w=640&h=320); 假如按鈕和界面不在同...
摘要:封裝手寫的方筆記使用檢測(cè)文件前端掘金副標(biāo)題可以做什么以及使用中會(huì)遇到的坑。目的是幫助人們用純中文指南實(shí)現(xiàn)復(fù)選框中多選功能前端掘金作者緝熙簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測(cè)試框架 Chai.js 源碼貢獻(xiàn)者之一,Chai.js 中會(huì)遇到很多異常處理...
摘要:封裝手寫的方筆記使用檢測(cè)文件前端掘金副標(biāo)題可以做什么以及使用中會(huì)遇到的坑。目的是幫助人們用純中文指南實(shí)現(xiàn)復(fù)選框中多選功能前端掘金作者緝熙簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測(cè)試框架 Chai.js 源碼貢獻(xiàn)者之一,Chai.js 中會(huì)遇到很多異常處理...
摘要:每次被執(zhí)行時(shí),和被傳入,這個(gè)根據(jù)進(jìn)行累加或者是自身消減,英文原意,進(jìn)而返回最新的。 之前的一篇文章:從一道面試題,到我可能看了假源碼討論了bind方法的各種進(jìn)階Pollyfill,今天再分享一個(gè)有意思的題目。 從解這道題目出發(fā),我會(huì)談到數(shù)組的Reduce方法,ES6特性和Redux數(shù)據(jù)流框架中Reducer的命名等等。一道典型的題目,卻如唐代詩(shī)人章碣《對(duì)月》詩(shī)中所云:別有洞天三十六,水...
閱讀 2717·2021-10-14 09:47
閱讀 5016·2021-09-22 15:52
閱讀 3408·2019-08-30 15:53
閱讀 1496·2019-08-30 15:44
閱讀 739·2019-08-29 16:41
閱讀 1726·2019-08-29 16:28
閱讀 492·2019-08-29 15:23
閱讀 1692·2019-08-26 12:20