异步action是指它的值为一个函数,同步action是指它的值是一个对象
1.引入redux-thunk
yarn add redux-thunk
引入中间件,并且将中间件作为createStore的第二个参数传入,这里的第二个参数中间件是一个函数,可以传入一个参数为引入的thunk
//该文件用于暴露store对象//引入createStore,专门用于创建redux中最核心的store对象//引入applyMiddleware中间件import {createStore,applyMiddleware} from 'redux'//引入为count组件服务的reducerimport countReducer from './count_reducers'//引入react-thunk,用于支持异步actionimport thunk from 'redux-thunk'//store中需要一个为之服务的reducer,因此将引入的reducer当参数传入这个创建的store中//并且将这个store对象暴露出去export default createStore(countReducer,applyMiddleware(thunk))
2.异步处理action.js
在action中进行异步操作,返回一个函数,作为异步处理方案//分别封装两个action函数用来创建action对象import {INCREMENT,DECREMENT} from './constant'import store from './store'export const createIncrement = data => ({type: INCREMENT,data})export const createDecrement = data => ({type: DECREMENT,data})//异步的action就是指action返回的是一个函数,并且该函数的返回值是一个同步的action//异步的action就是指action返回的是一个函数,并且该函数的返回值是一个同步的actionexport const createAsyncIncrement = (data, time) => {return (dispatch) => {setTimeout(() => {dispatch(createIncrement(data))}, time);}}
3.使用触发action
asyncIcrement=()=>{let {value}=this.selectNumberstore.dispatch(createAsyncIncrement(value*1,500))}
