国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【前端知識】React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作

這篇具有很好參考價(jià)值的文章主要介紹了【前端知識】React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作

一、RTK中使用異步操作

  1. 引入RTK中的createAsyncThunk,在extraReducers中監(jiān)聽執(zhí)行狀態(tài)

    import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
    import axios from "axios";
    
    export const fetchHomeMultidataAction = createAsyncThunk(
      "fetch/homemultidata",
      async () => {
        const res = await axios.get("http://123.207.32.32:8000/home/multidata");
        return res.data;
      }
    );
    
    const homeSlice = createSlice({
      name: "home",
      initialState: {
        banners: [],
        recommends: [],
      },
      reducers: {
        changeBanners(state, { payload }) {
          state.banners = payload;
        },
        changeRecommends(state, { payload }) {
          state.recommends = payload;
        },
      },
      extraReducers: {
        [fetchHomeMultidataAction.pending](state, action) {
          console.log("fetchHomeMultidataAction pending");
        },
        [fetchHomeMultidataAction.fulfilled](state, { payload }) {
          console.log("fetchHomeMultidataAction fulfilled");
          state.banners = payload.data.banner.list;
          state.recommends = payload.data.recommend.list;
        },
        [fetchHomeMultidataAction.rejected](state, action) {
          console.log("fetchHomeMultidataAction rejected");
        },
      },
    });
    
    export const { changeBanners, changeRecommends } = homeSlice.actions;
    export default homeSlice.reducer;
    
    
  2. 在界面中引入所需的異步操作Action

    import React, { PureComponent } from "react";
    import { connect } from "react-redux";
    import { addNumber } from "../store/features/counter";
    import { fetchHomeMultidataAction } from "../store/features/home";
    
    export class Home extends PureComponent {
      componentDidMount() {
        this.props.fetchHomeMultidata()
      }
    
      addNumber(num) {
        this.props.addNumber(num);
      }
    
      render() {
        const { counter } = this.props;
        return (
          <div>
          home:{counter}
      <button onClick={(e) => this.addNumber(5)}>+5</button>
    <button onClick={(e) => this.addNumber(8)}>+8</button>
    <button onClick={(e) => this.addNumber(18)}>+18</button>
    </div>
    );
    }
    }
    
    const mapStateToProps = (state) => ({
      counter: state.counter.counter,
    });
    
    const mapDispatchToProps = (dispatch) => ({
      addNumber(num) {
        dispatch(addNumber(num));
      },
      fetchHomeMultidata(){
        dispatch(fetchHomeMultidataAction())
      }
    });
    
    export default connect(mapStateToProps, mapDispatchToProps)(Home);
    
    
  3. 查看運(yùn)行結(jié)果
    【前端知識】React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作,前端知識,React,前端,react.js,前端框架文章來源地址http://www.zghlxwxcb.cn/news/detail-616758.html

二、extraReducer的另外一種寫法(鏈?zhǔn)秸{(diào)用)

  1. extraReducer還可以傳入一個(gè)函數(shù),函數(shù)接受一個(gè)builder參數(shù):
extraReducers: (builder) => {
  builder
    .addCase(fetchHomeMultidataAction.pending, (state, action) => {
    console.log("fetchHomeMultidataAction pending");
  })
    .addCase(fetchHomeMultidataAction.fulfilled, (state, { payload }) => {
    console.log("fetchHomeMultidataAction fulfilled");
    state.banners = payload.data.banner.list;
    state.recommends = payload.data.recommend.list;
  })
    .addCase(fetchHomeMultidataAction.rejected, (state, action) => {
    console.log("fetchHomeMultidataAction rejected");
  });
},
  1. 查看運(yùn)行結(jié)果,與之前的寫法結(jié)果一致
    【前端知識】React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作,前端知識,React,前端,react.js,前端框架

到了這里,關(guān)于【前端知識】React 基礎(chǔ)鞏固(三十六)——RTK中的異步操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【前端知識】React 基礎(chǔ)鞏固(三十三)——Redux的使用詳解

    【前端知識】React 基礎(chǔ)鞏固(三十三)——Redux的使用詳解

    針對 React 基礎(chǔ)鞏固(三十二) 中的案例,我們希望抽取頁面中共有的代碼(例如下方的代碼),使用高階組件統(tǒng)一攔截。 為了讓react和redux產(chǎn)生聯(lián)系,安裝一款工具 react-redux 使用 react-redux ,在index.js中統(tǒng)一注入store 新建about.js頁面,通過 react-redux 引入store 在App.jsx中引入新的

    2024年02月15日
    瀏覽(41)
  • 【前端知識】React 基礎(chǔ)鞏固(三十七)——自定義connect高階組件

    【前端知識】React 基礎(chǔ)鞏固(三十七)——自定義connect高階組件

    從這行代碼可以看到,目前的connect直接引用了上級目錄的store,過于依賴目前既定的store,這樣不利于復(fù)用。假設(shè)另一個(gè)項(xiàng)目的store所在位置不在上級目錄中,則會出現(xiàn)問題。 為了讓所有人都能使用,我們應(yīng)該把這種“寫死”的做法換成讓開發(fā)者自己傳入一個(gè)store: 構(gòu)建一個(gè)

    2024年02月15日
    瀏覽(25)
  • 【前端知識】React 基礎(chǔ)鞏固(三十九)——React-Router的基本使用

    【前端知識】React 基礎(chǔ)鞏固(三十九)——React-Router的基本使用

    Router中包含了對路徑改變的監(jiān)聽,并且會將相應(yīng)的路徑傳遞給子組件。 Router包括兩個(gè)API: BrowserRouter使用history模式 HashRouter使用hash模式(路徑后面帶有#號) 嘗試在項(xiàng)目中使用HashRouter: 安裝Router 在 index.js 中引入并使用HashRouter Routes:包裹所有的Route,在其中匹配一個(gè)路由(

    2024年02月14日
    瀏覽(27)
  • 【前端知識】React 基礎(chǔ)鞏固(四十六)——自定義Hook的應(yīng)用

    【前端知識】React 基礎(chǔ)鞏固(四十六)——自定義Hook的應(yīng)用

    自定義Hook本質(zhì)上只是一種函數(shù)代碼邏輯的抽取,嚴(yán)格意義上而言,它并不算React的特性。 實(shí)現(xiàn)組件創(chuàng)建/銷毀時(shí)打印日志 實(shí)現(xiàn)Context共享 封裝 TokenContext 和 UserContext 兩個(gè)Context在自定義Hook useUserToken 中,通過使用 userUserToken 同時(shí)獲取兩個(gè)Context的內(nèi)容: 實(shí)現(xiàn)獲取滾動位置 封裝滾

    2024年02月14日
    瀏覽(23)
  • 【前端知識】React 基礎(chǔ)鞏固(三十二)——Redux的三大原則、使用流程及實(shí)踐

    【前端知識】React 基礎(chǔ)鞏固(三十二)——Redux的三大原則、使用流程及實(shí)踐

    單一數(shù)據(jù)源 整個(gè)應(yīng)用程序的state被存儲在一顆object tree 中,并且這個(gè)object tree 只存儲在一個(gè)store中; Redux并沒有強(qiáng)制讓我們不能創(chuàng)建多個(gè)Store,但是那樣做不利于數(shù)據(jù)維護(hù); 單一的數(shù)據(jù)源可以讓整個(gè)應(yīng)用程序的state變得方便維護(hù)、追蹤、修改; State是只讀的 唯一修改State的方法

    2024年02月15日
    瀏覽(31)
  • 【前端知識】React 基礎(chǔ)鞏固(三十一)——store數(shù)據(jù)的訂閱和Redux的優(yōu)化

    【前端知識】React 基礎(chǔ)鞏固(三十一)——store數(shù)據(jù)的訂閱和Redux的優(yōu)化

    store/index.js test.js redux代碼優(yōu)化: 將派發(fā)的action生成過程放到一個(gè)actionCreators函數(shù)中 將定義的所有actionCreators的函數(shù),放到一個(gè)獨(dú)立的文件中:actionCreators.js actionCreators 和 reducer 函數(shù)中使用字符串常量是一致的,所以將常量抽取到一個(gè)獨(dú)立的constants.js文件中 將reducer和默認(rèn)值(

    2024年02月15日
    瀏覽(37)
  • 【前端知識】React 基礎(chǔ)鞏固(三十八)——log、thunk、applyMiddleware中間件的核心代碼

    利用Monkey Patching,修改原有的程序邏輯,在調(diào)用dispatch的過程中,通過dispatchAndLog實(shí)現(xiàn)日志打印功能 redux中利用中間件 redux-thunk 可以讓dispatch不不僅能處理對象,還能處理函數(shù) 單個(gè)調(diào)用函數(shù)來應(yīng)用中間件,非常不方便,封裝一個(gè)函數(shù)來合并中間件 在store/index.js中應(yīng)用上面三個(gè)

    2024年02月14日
    瀏覽(46)
  • 【前端知識】React 基礎(chǔ)鞏固(十三)——列表渲染

    在 React 中沒有像 Vue 模塊語法中的 v-for 指令,而是需要我們通過 JS 代碼的方式組織數(shù)據(jù),轉(zhuǎn)成 JSX 在 React 中,展示列表最多的方式就是使用數(shù)組的 map 高階函數(shù) 在展示數(shù)組前,有時(shí)會進(jìn)行一些處理 過濾一些內(nèi)容(filter 函數(shù)) 截取數(shù)組中的一部分內(nèi)容(slice 函數(shù)) 列表中的

    2024年02月10日
    瀏覽(31)
  • 【前端知識】React 基礎(chǔ)鞏固(二十八)——StrictMode

    【前端知識】React 基礎(chǔ)鞏固(二十八)——StrictMode

    StrictMode 是一個(gè)用來突出顯示應(yīng)用程序中潛在問題的工具 與 Fragment 一樣,StrictMode 不會渲染任何可見的 UI 為后代出發(fā)額外的檢測和警告 嚴(yán)格模式檢查僅在開發(fā)模式下運(yùn)行,不影響生產(chǎn)構(gòu)建 嚴(yán)格模式檢查什么? 識別不安全的生命周期 使用過時(shí)的 ref API 檢查意外的副作用 組件

    2024年02月16日
    瀏覽(57)
  • 【前端知識】React 基礎(chǔ)鞏固(二十七)——Fragment

    【前端知識】React 基礎(chǔ)鞏固(二十七)——Fragment

    Fragment 允許將子列表分組,而無需向 DOM 添加額外節(jié)點(diǎn) 可以采用語法糖 / 來替代 Fragment,但在需要添加 key 的場景下不能使用此短語 查看Fragment應(yīng)用后的效果

    2024年02月16日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包