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

Redux中異步action與同步action的使用

 更新時(shí)間:2022年07月29日 09:25:57   作者:codeMak1r.小新  
本文主要介紹了Redux中異步action與同步action的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

異步action

  • action:Object{} => 同步action
  • action:function() => 異步action
 同步action異步action
類型Object類型的對(duì)象function()函數(shù)
dispatch(action)同步的action被dispatch到store后;
store直接將其交給reducer加工。
異步的action函數(shù)被dispatch到store后;
store會(huì)先調(diào)用這個(gè)函數(shù),等待異步任務(wù)結(jié)束。
   

在這里插入圖片描述

store監(jiān)測(cè)到傳入的action是一個(gè)一般對(duì)象,那么store就知道這是一個(gè)同步的action,store就會(huì)把這個(gè)action交給Reducers去加工,執(zhí)行。

但是store若監(jiān)測(cè)到傳入的action是一個(gè)函數(shù),那么store就知道這是一個(gè)異步的action,store就會(huì)配合中間件,先調(diào)用這個(gè)函數(shù)。等到函數(shù)內(nèi)的異步任務(wù)結(jié)束,再調(diào)用函數(shù)內(nèi)部的同步的dispatch,再交給Reducers去加工狀態(tài)。同時(shí),store調(diào)用這個(gè)包裹著異步任務(wù)的函數(shù)時(shí),會(huì)傳入一個(gè)dispatch方法作為函數(shù)的參數(shù),以供函數(shù)內(nèi)部異步任務(wù)結(jié)束時(shí)使用這個(gè)同步的dispatch。

中間件(Middleware):redux-thunk

安裝中間件:

npm install redux-thunk
// 或
yarn add redux-thunk

引入中間件:

既然中間件是配合store使用的,那么當(dāng)然是在store中引入并使用這個(gè)中間件

store.js:

/* 
  該文件專門用于暴露一個(gè)store對(duì)象,整個(gè)應(yīng)用只有一個(gè)store對(duì)象
*/
// 引入createStore,專門用于創(chuàng)建redux中最為核心的store對(duì)象
import { legacy_createStore as createStore, applyMiddleware } from 'redux';
// 引入為Count組件服務(wù)的reducer
import countReducer from './count_reducer'
// 引入redux-thunk,用于支持異步action
import thunk from 'redux-thunk'
// 暴露store
export default createStore(countReducer, applyMiddleware(thunk))

代碼解釋:

applyMiddleware是redux中用于執(zhí)行中間件的函數(shù);

引入redux-thunk中間件;

在creaetStore時(shí),將applyMiddleware傳入作為createStore的第二個(gè)參數(shù);

applyMiddleware本身是一個(gè)函數(shù),用于執(zhí)行中間件,所以要把(thunk)傳入applyMiddleware這個(gè)函數(shù)。

applyMiddleware(thunk)含義是:執(zhí)行thunk這個(gè)中間件。

這樣一來,store就會(huì)在接收到一個(gè)函數(shù)類型的action時(shí),去調(diào)用這個(gè)action對(duì)應(yīng)的函數(shù)。

并且,異步action中一般都會(huì)調(diào)用同步的action,所以store在調(diào)用這個(gè)異步action對(duì)應(yīng)的函數(shù)時(shí),會(huì)傳入dispatch方法作為參數(shù),以供異步任務(wù)結(jié)束后,使用這個(gè)dispatch方法調(diào)用同步的action。

count_action_creator.js:

/* 
  該文件專門為Count組件生成action動(dòng)作對(duì)象
*/
import { INCREMENT, DECREMENT } from './constant'
// 同步action,就是指action的值為Object對(duì)象
export const createIncrementAction = data => ({ type: INCREMENT, data })
// ({ type: 'increment', data }) 相當(dāng)于 { return { type: 'increment', data } }
export const createDecrementAction = data => ({ type: DECREMENT, data })

// 異步action,就是指action的值是函數(shù)
export const createIncrementAsyncAction = (data, time) => {
  return (dispatch) => {
    setTimeout(() => {
      dispatch(createIncrementAction(data))
    }, time)
  }
}

在Count組件中調(diào)用這個(gè)函數(shù):

incrementAsync = () => {
  const { value } = this.selectedNumber
  store.dispatch(createIncrementAsyncAction(value * 1, 500))
}

異步action總結(jié):

延遲的動(dòng)作不想交給組件自身,想交給action時(shí),可以使用異步的action
(但異步action并不是必須的);

何時(shí)需要異步action:
想對(duì)狀態(tài)進(jìn)行操作,但是具體的數(shù)據(jù)靠異步任務(wù)返回;

具體編碼:

npm install redux-thunk

yarn add redux-thunk安裝中間件

創(chuàng)建action的函數(shù)不再返回一個(gè)一般對(duì)象,而是返回一個(gè)函數(shù),該函數(shù)中寫異步任務(wù);

異步任務(wù)有結(jié)果后,使用store傳入的dispatch參數(shù)分發(fā)一個(gè)同步的action去真正操作數(shù)據(jù)

備注:異步action不是必須要寫的,完全可以自己在組件中等待異步任務(wù)的結(jié)果之后再去分發(fā)同步action。

 到此這篇關(guān)于Redux中異步action與同步action的使用的文章就介紹到這了,更多相關(guān)Redux 異步action與同步action內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom

    react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom

    這篇文章主要介紹了react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • react-native 封裝選擇彈出框示例(試用ios&android)

    react-native 封裝選擇彈出框示例(試用ios&android)

    本篇文章主要介紹了react-native 封裝選擇彈出框示例(試用ios&android),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • 詳解如何給React-Router添加路由頁面切換時(shí)的過渡動(dòng)畫

    詳解如何給React-Router添加路由頁面切換時(shí)的過渡動(dòng)畫

    這篇文章主要介紹了詳解如何給React-Router添加路由頁面切換時(shí)的過渡動(dòng)畫,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • React插槽使用方法

    React插槽使用方法

    本文主要介紹了React插槽使用方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • React冒泡和阻止冒泡的應(yīng)用詳解

    React冒泡和阻止冒泡的應(yīng)用詳解

    這篇文章主要介紹了React冒泡和阻止冒泡的應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • react學(xué)習(xí)每天一個(gè)hooks?useWhyDidYouUpdate

    react學(xué)習(xí)每天一個(gè)hooks?useWhyDidYouUpdate

    這篇文章主要為大家介紹了react學(xué)習(xí)每天一個(gè)hooks?useWhyDidYouUpdate使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 如何在React項(xiàng)目中引入字體文件并使用詳解

    如何在React項(xiàng)目中引入字體文件并使用詳解

    我們項(xiàng)目中通常會(huì)需要引入字體,所以下面這篇文章主要給大家介紹了關(guān)于如何在React項(xiàng)目中引入字體文件并使用的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • next-redux-wrapper使用細(xì)節(jié)及源碼分析

    next-redux-wrapper使用細(xì)節(jié)及源碼分析

    這篇文章主要為大家介紹了next-redux-wrapper使用細(xì)節(jié)及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • React?Native?Modal?的封裝與使用實(shí)例詳解

    React?Native?Modal?的封裝與使用實(shí)例詳解

    這篇文章主要介紹了React?Native?Modal?的封裝與使用,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • React函數(shù)式組件Hook中的useState函數(shù)的詳細(xì)解析

    React函數(shù)式組件Hook中的useState函數(shù)的詳細(xì)解析

    Hook 就是 JavaScript 函數(shù),這個(gè)函數(shù)可以幫助你鉤入(hook into) React State以及生命周期等特性,這篇文章主要介紹了React Hook useState函數(shù)的詳細(xì)解析的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評(píng)論

巴彦县| 威信县| 开鲁县| 镇远县| 安康市| 改则县| 兰州市| 博乐市| 酒泉市| 墨脱县| 金阳县| 保山市| 苍山县| 海兴县| 涿鹿县| 宁德市| 公安县| 阿坝| 高雄县| 长岭县| 柳州市| 军事| 肇州县| 姚安县| 大港区| 且末县| 丰都县| 上饶市| 维西| 清苑县| 江达县| 囊谦县| 巴中市| 连南| 如东县| 观塘区| 昔阳县| 富蕴县| 三河市| 辽源市| 漳州市|