最新国产好看的视频,伊人天堂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é)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

在 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;
 }
};

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

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

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

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

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

當函數(shù)參數(shù) state 為 undefined 時,state 就會去 usersDefaultState 這個默認值,利用這個技巧,我們可以在 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é)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

    這篇文章主要介紹了微信小程序12行js代碼自己寫個滑塊功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    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é)對我說“好吧,我準備去學(xué)習”,我大驚,這老勾引我打dota的也去學(xué)習,于是我好奇他學(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

最新評論

长垣县| 鞍山市| 陕西省| 内乡县| 油尖旺区| 册亨县| 大兴区| 景洪市| 水富县| 古丈县| 平和县| 五莲县| 根河市| 郯城县| 大新县| 河北区| 乳山市| 沙坪坝区| 巩义市| 麟游县| 精河县| 富锦市| 乐业县| 新津县| 南澳县| 龙陵县| 贵州省| 遂宁市| 郴州市| 拜泉县| 赫章县| 新乐市| 腾冲县| 象山县| 博湖县| 繁昌县| 平昌县| 鄂托克旗| 阿克苏市| 萨嘎县| 南皮县|