最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

重置Redux的狀態(tài)數(shù)據(jù)的方法實現(xiàn)

 更新時間:2019年11月18日 09:56:21   作者:Sdbybyd  
這篇文章主要介紹了重置Redux的狀態(tài)數(shù)據(jù)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在 Redux 使用過程中,通常需要重置 store 的狀態(tài),比如應(yīng)用初始化的時候、用戶退出登錄的時候,這樣能夠避免數(shù)據(jù)殘留,避免 UI 顯示了上一個用戶的數(shù)據(jù),容易造成用戶數(shù)據(jù)泄露。

最簡單的實現(xiàn)方法就是為每個獨立的 store 添加RESET_APP 的 action,每次需要 reset 的時候,dispatch 這個 action 即可,如下代碼

const usersDefaultState = [];

const users = (state = usersDefaultState, { type, payload }) => {
 switch (type) {
  case "ADD_USER":
   return [...state, payload];
  default:
   return state;
 }
};

添加 reset action 后:

const usersDefaultState = []

const users = (state = usersDefaultState, { type, payload }) => {
 switch (type) {
  case "RESET_APP":
   return usersDefaultState;
  case "ADD_USER":
   return [...state, payload];
  default:
   return state;
 }
};

這樣雖然簡單,但是當(dāng)獨立的 store 較多時,需要添加很多 action,而且需要很多個 dispatch 語句去觸發(fā),比如:

dispatch({ type: RESET_USER });
dispatch({ type: RESET_ARTICLE });
dispatch({ type: RESET_COMMENT });

當(dāng)然你可以封裝一下代碼,讓一個RESET_DATA 的 action 去觸發(fā)多個 reset 的 action,避免業(yè)務(wù)代碼看上去太亂。

不過本文介紹一種更優(yōu)雅的實現(xiàn),需要用到一個小技巧,看下面代碼:

const usersDefaultState = []
const users = (state = usersDefaultState, { type, payload }) => {...}

當(dāng)函數(shù)參數(shù) state 為 undefined 時,state 就會去 usersDefaultState 這個默認(rèn)值,利用這個技巧,我們可以在 rootReducers 中檢測 RESET_DATA action,直接賦值 undefined 就完成了所有 store 的數(shù)據(jù)重置。實現(xiàn)代碼如下:

我們通常這樣導(dǎo)出所有的 reducers

// reducers.js
const rootReducer = combineReducers({
 /* your app's top-level reducers */
})

 
export default rootReducer;

先封裝一層,combineReducers 返回 reducer 函數(shù),不影響功能

// reducers.js
const appReducer = combineReducers({
 /* your app's top-level reducers */
})

const rootReducer = (state, action) => {
 return appReducer(state, action)
}

export default rootReducer;

檢測到特定重置數(shù)據(jù)的 action 后利用 undefined 技巧 (完整代碼)

// reducers.js
const appReducer = combineReducers({
 /* your app's top-level reducers */
})

const rootReducer = (state, action) => {
 if (action.type === 'RESET_DATA') {
  state = undefined
 }

 return appReducer(state, action)
}

參考:

Resetting Redux State with a Root Reducer
How to reset the state of a Redux store?

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序12行js代碼自己寫個滑塊功能(推薦)

    微信小程序12行js代碼自己寫個滑塊功能(推薦)

    這篇文章主要介紹了微信小程序12行js代碼自己寫個滑塊功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • JS判斷不同分辨率調(diào)用不同的CSS樣式文件實現(xiàn)思路及測試代碼

    JS判斷不同分辨率調(diào)用不同的CSS樣式文件實現(xiàn)思路及測試代碼

    最近看一個網(wǎng)站,發(fā)現(xiàn)顯示器不同的分辨率,樣式文件調(diào)用的也不一樣,于是很好奇研究并寫了一個,經(jīng)測試感覺還不錯,感興趣的你可以來看看哦
    2013-01-01
  • javascript制作sql轉(zhuǎn)換為stringBuffer的小工具

    javascript制作sql轉(zhuǎn)換為stringBuffer的小工具

    這篇文章主要介紹了javascript制作sql轉(zhuǎn)換為stringBuffer的小工具,使用方法很簡單,吧寫好的sql語句只要格式化好之后放進去就可以了,推薦給大家,有需要的小伙伴可以參考下。
    2015-04-04
  • 跨瀏覽器通用、可重用的選項卡tab切換js代碼

    跨瀏覽器通用、可重用的選項卡tab切換js代碼

    今天一同學(xué)對我說“好吧,我準(zhǔn)備去學(xué)習(xí)”,我大驚,這老勾引我打dota的也去學(xué)習(xí),于是我好奇他學(xué)什么,他說要搞一個選項卡切換js
    2011-09-09
  • JavaScript獲得選中文本內(nèi)容的方法

    JavaScript獲得選中文本內(nèi)容的方法

    今天希望實現(xiàn)一個,直接在網(wǎng)頁上選中文本,點擊收藏夾的鏈接(javascript)即可彈出新窗口(類似“百度搜藏”和“QQ書簽”),新窗口中的文本框即顯示了選中的文本。
    2008-12-12
  • JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實例解析

    JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實例解析

    在函數(shù)內(nèi)部,有兩個特殊的對象:arguments和this。這篇文章主要介紹了函數(shù)內(nèi)部屬性之a(chǎn)rguments和this ,需要的朋友可以參考下
    2018-10-10
  • js常用代碼段整理

    js常用代碼段整理

    以下是平時收集的幾個常用代碼段,大多數(shù)是從網(wǎng)上搜集而來。也均為未找到是誰誰原創(chuàng),是否允許轉(zhuǎn)載等要求, 所以如果看到的朋友發(fā)現(xiàn)其中有些代碼是自己寫的,還請原諒在下轉(zhuǎn)帖出來
    2011-11-11
  • 使用JS編寫的隨機抽取號碼的小程序

    使用JS編寫的隨機抽取號碼的小程序

    這篇文章主要介紹了使用JS編寫的隨機抽取號碼的小程序功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-08-08
  • 常用的js驗證和數(shù)據(jù)處理總結(jié)

    常用的js驗證和數(shù)據(jù)處理總結(jié)

    遇到需要對數(shù)據(jù)及表單驗證的,我相信大家都像我一樣,喜歡在網(wǎng)上找相關(guān)的方法,因為自己寫的話,是比較耗時的。今天就給大家分享一下,自己在工作中總結(jié)的一些常用的js。
    2016-08-08
  • 微信小程序?qū)崿F(xiàn)美團菜單

    微信小程序?qū)崿F(xiàn)美團菜單

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)美團菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論

清苑县| 杭州市| 荆门市| 行唐县| 兴山县| 新宾| 七台河市| 类乌齐县| 庆安县| 米易县| 达州市| 聂拉木县| 渝北区| 临湘市| 保山市| 宁陕县| 青海省| 北海市| 望谟县| 大冶市| 涿州市| 车致| 新兴县| 宣城市| 辉南县| 天峻县| 宁陵县| 嘉义县| 昌乐县| 道真| 扎鲁特旗| 吉隆县| 金寨县| 奉节县| 清镇市| 香河县| 申扎县| 彭水| 乐平市| 黄梅县| 宜章县|