欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

最簡(jiǎn)單的實(shí)現(xiàn)方法就是為每個(gè)獨(dú)立的 store 添加RESET_APP 的 action,每次需要 reset 的時(shí)候,dispatch 這個(gè) 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;
 }
};

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

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

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

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

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

當(dāng)函數(shù)參數(shù) state 為 undefined 時(shí),state 就會(huì)去 usersDefaultState 這個(gè)默認(rèn)值,利用這個(gè)技巧,我們可以在 rootReducers 中檢測(cè) RESET_DATA action,直接賦值 undefined 就完成了所有 store 的數(shù)據(jù)重置。實(shí)現(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;

檢測(cè)到特定重置數(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?

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

相關(guān)文章

  • JavaScript組成、引入、輸出、運(yùn)算符基礎(chǔ)知識(shí)講解

    JavaScript組成、引入、輸出、運(yùn)算符基礎(chǔ)知識(shí)講解

    JavaScript 被數(shù)百萬計(jì)的網(wǎng)頁用來改進(jìn)設(shè)計(jì)、驗(yàn)證表單、檢測(cè)瀏覽器、創(chuàng)建cookies,以及更多的應(yīng)用。這篇文章主要介紹了JavaScript組成、引入、輸出、運(yùn)算符基礎(chǔ)知識(shí)講解,需要的朋友可以參考下
    2016-12-12
  • Paypal支付不完全指北

    Paypal支付不完全指北

    這篇文章主要介紹了Paypal支付不完全指北,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • JavaScript實(shí)現(xiàn)留言板實(shí)戰(zhàn)案例

    JavaScript實(shí)現(xiàn)留言板實(shí)戰(zhàn)案例

    這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)留言板的相關(guān)資料,使用JavaScript來編寫留言板功能相信大家都不陌生,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下
    2023-07-07
  • js canvas實(shí)現(xiàn)畫圖、濾鏡效果

    js canvas實(shí)現(xiàn)畫圖、濾鏡效果

    這篇文章主要為大家詳細(xì)介紹了js canvas實(shí)現(xiàn)畫圖、濾鏡效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • javaScript中push函數(shù)用法實(shí)例分析

    javaScript中push函數(shù)用法實(shí)例分析

    這篇文章主要介紹了javaScript中push函數(shù)用法,較為詳細(xì)的分析了javascript中push函數(shù)的功能、定義及使用技巧,需要的朋友可以參考下
    2015-06-06
  • 自定義javascript驗(yàn)證框架示例【附源碼下載】

    自定義javascript驗(yàn)證框架示例【附源碼下載】

    這篇文章主要介紹了自定義javascript驗(yàn)證框架,結(jié)合實(shí)例形式分析了javascript正則驗(yàn)證相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2019-05-05
  • 微信小程序自定義tabbar組件

    微信小程序自定義tabbar組件

    這篇文章主要為大家詳細(xì)介紹了微信小程序自定義tabbar組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • js實(shí)現(xiàn)中文轉(zhuǎn)拼音的完整步驟記錄

    js實(shí)現(xiàn)中文轉(zhuǎn)拼音的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于js實(shí)現(xiàn)中文轉(zhuǎn)拼音的相關(guān)資料,主要利用了pinyin-pro包,可以完美的實(shí)現(xiàn)所需要的功能,需要的朋友可以參考下
    2021-06-06
  • 每天一篇javascript學(xué)習(xí)小結(jié)(Array數(shù)組)

    每天一篇javascript學(xué)習(xí)小結(jié)(Array數(shù)組)

    這篇文章主要介紹了javascript中的Array數(shù)組知識(shí)點(diǎn),對(duì)數(shù)組的基本使用方法,以及各種方法進(jìn)行整理,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 深入了解Javascript的事件循環(huán)機(jī)制

    深入了解Javascript的事件循環(huán)機(jī)制

    單線程的同步等待極大影響效率,任務(wù)不得不一個(gè)一個(gè)等待執(zhí)行,對(duì)于網(wǎng)頁應(yīng)用是無法接受的。所以Javascript使用事件循環(huán)機(jī)制來解決異步任務(wù)的問題。本文就來講講Javascript的事件循環(huán)機(jī)制,希望對(duì)你有所幫助
    2022-09-09

最新評(píng)論