首頁 > web前端 > 前端問答 > react怎麼請求資料異步

react怎麼請求資料異步

藏色散人
發布: 2022-12-28 09:40:39
原創
1977 人瀏覽過

react請求資料非同步的方法:1、透過「npm i redux-thunk --save npm i axios --save」指令下載thunk;2、在store.js裡面引入thunk外掛;3、在需要模組的actionCreator裡引入中間件「redux-thunk」即可。

react怎麼請求資料異步

本教學操作環境:Windows10系統、react18.0.0版、Dell G3電腦。

react怎麼請求資料非同步?

react非同步請求資料方法。

關於react非同步請求資料有很多種方案。

1、saga (用了er6產生器函數)

2、promise

3、thunk

4、…

為什麼要用插件啊?是為了改造這個redux的action動作。如果非同步的話,我們發動作,actionCreator只有回傳對象,而異步這個插件能讓你隔一段時間再發這個動作,是為了改造動作用的。

本文用thunk,它可能不是最好的,但是是我用得比較習慣的。

一、下載

npm i redux-thunk --save
npm i axios --save
登入後複製

二、引用。在store.js裡面引入插件,並使用。

import {createStore,applyMiddleware} from 'redux'   //引入applyMiddleware
import reducers from './reducers'  //总的reducer
import thunk from 'redux-thunk'   //引入thunk 
var store = createStore(reducer,applyMiddleware(thunk));  //使用中间件
export default store;
登入後複製

三、發資料

在你需要模組的actionCreator裡:

import axios from 'axios'
export default {
    getData(){
        return (dispatch)=>{   // 引入中间件redux-thunk后,就可以延迟发出动作
                axios.get('http://www.xmyxapp.com/api/tab/1?start=0').then((res)=>{
                    console.log(res)
                    dispatch({
                        type:'GETDATA',
                        list:res.data.data.items.list
                    })
                })
        }
    }
}
登入後複製

四、效果測試

在你需要的模組裡面的reducer :

var initState  ={
    list:[]
}
export const listReducer = (state = initState, action) => {
    var newState ={...state};
    switch (action.type) {
        case 'GETDATA':
            newState.list = action.list  // 这个action.list就是该模块actionCreator里传过来的值
            return newState;
        default:
            return state
    }
}
登入後複製

在store裡面總和的reducers:

import {combineReducers} from 'redux'
import {listReducer} from '../components/list/reducer'
 var reducer = combineReducers({
     list:listReducer
 })
 export default reducer;
登入後複製

在你需要的模組裡面的元件:

import React, { Component } from 'react'
import {connect} from 'react-redux'
import actionCreator from './actionCreator';
 class List extends Component {
  componentDidMount(){
      this.props.getData();   // 调用异步方法获取数据
  }
  render() {
      console.log(this.props);
    return (
      <div>
        <ul>
            {
                this.props.list.list.map((item)=>{
                    return item.title?<li key={item.id}>{item.title}</li>:""
                })
            }
        </ul>
      </div>
    )
  }
}
export default connect((state)=>state,actionCreator)(List);
登入後複製

推薦學習:《react影片教學

以上是react怎麼請求資料異步的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板