React中间件个人的一些笔记
React中间件是处于你的React应用程序的Redux存储和你的React组件之间的一种机制。它使你可以在操作发送到存储和状态更新发送到组件之前对它们进行一些处理。
以下是一些常见的Redux中间件及其用法的示例:
- Redux Thunk: 这是一个常用的中间件,用于处理异步操作。
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
const store = createStore(rootReducer, applyMiddleware(thunk));
在你的action creator中,你可以返回一个函数,而不是一个普通的对象。这个函数有dispatch和getState作为参数,可以使用这两个参数来进行异步操作。
export function fetchPosts() {
return function (dispatch) {
axios.get('/api/posts').then(response => {
dispatch({ type: FETCH_POSTS, payload: response.data });
}).catch(error => {
throw(error);
});
};
}
- Redux Logger: 这是一个用于记录状态更新的中间件。
import { createStore, applyMiddleware } from 'redux';
import { createLogger } from 'redux-logger';
import rootReducer from './reducers';
const logger = createLogger();
const store = createStore(rootReducer, applyMiddleware(logger));
当你的store状态更新时,Redux Logger会在控制台上打印出action和新的state。
- Redux Promise: 这是另一个处理异步操作的中间件。
import { createStore } from 'redux';
import { autoRehydrate } from 'redux-persist';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
const middleware = [ thunk ];
const store = createStore(
rootReducer,
composeWithDevTools(
applyMiddleware(...middleware),
autoRehydrate()
)
);
在你的action creator中,你可以返回一个Promise对象,这个Promise对象会被处理,并且如果它resolve了一个对象,那么这个对象会被当作一个action处理。
export function fetchPosts() {
return (dispatch) => {
return axios.get('/api/posts').then(response => {
dispatch({ type: FETCH_POSTS, payload: response.data });
}).catch(error => {
throw(error);
});
};
}
以上就是Redux中间件的一些基本用法和示例。
评论已关闭