在專案中我們常常需要通過後端提供的介面來非同步獲取資料,但是應該在哪獲取資料能,如果在reducer中獲取資料,顯然是不合適的,因為reducer是乙個純函式,純函式不適合做這些具有***的操作,如果在元件中去獲取的獲取的話,則很容易使**顯得冗雜,功能不單一。那究竟應該如何做呢?接下來我經用redux-thunk這個外掛程式來非同步獲取資料
1、首先安裝react-thunk外掛程式
npm i react-thunk
import
from
'redux'
import reducer from
'./reducer'
import thunk from
'redux-thunk'
let store =
createstore
(reducer,
(thunk)
)export
default store
3、在元件載入完成後派發乙個action
componentdidmount()
4、在creataction裡面進行ajax資料的獲取以及資料的派發
getdata()
)})}
}
5、在reducer.js中對非同步獲取的資料進行修改
const initialstate =
export
default
(state = initialstate, action)
=>
newstate.list=action.list
return newstate
default
:return state
}}
和react-thunk功能類似的還有react-saga、react-umi等。
最後,一首張杰的逆戰送給大家。
React中setState為非同步機制
setstate用來更改state,並觸發render方法重新渲染頁面,這之間要經過react核心中diff演演算法比較dom樹,最終決定是否需要被渲染如何渲染。如何在第一時間獲取並應用setstate的值,set完第一時間呼叫方法即可獲取 如 this.setstate nowstate 便利 1...
react中setState同步 非同步問題
class example extends react.component componentdidmount console.log this.state.val 第 1 次 log this.setstate console.log this.state.val 第 2 次 log settim...
React使用jquery方式動態獲取資料
好久沒寫react了,今天有空寫一下來react實現實時請求資料,並重新整理資料的小demo.首先我還是選擇了jquery方式中自帶的ajax獲取資料,首先要引用所需的js包 接下來要寫乙個自定義的js檔案,建立乙個react元件 var demo react.createclass 渲染元件 re...