Redux:不修改商店的异步操作
Redux: async actions without modifying the store
从 redux-thunk 中间件发送 http 请求是否是个好主意,即使这个 http 请求没有修改商店?
这是一些解释我的意思的代码:
export const CONFIRM_UPLOAD_REQUEST = 'CONFIRM_UPLOAD_REQUEST';
export const CONFIRM_UPLOAD_SUCCESS = 'CONFIRM_UPLOAD_SUCCESS';
export const CONFIRM_UPLOAD_FAILURE = 'CONFIRM_UPLOAD_FAILURE';
function _confirmUpload() {
return {
[CALL_API]: {
types: [CONFIRM_UPLOAD_REQUEST, CONFIRM_UPLOAD_SUCCESS, CONFIRM_UPLOAD_FAILURE],
requestMethod: 'POST',
endpoint: `upload/confirm`
}
};
}
export function confirmUpload() {
return (dispatch) => dispatch(_confirmUpload());
}
当我发送此操作时,我的中间件将执行 POST upload/confirm 请求。它不会修改商店(所以我没有 CONFIRM_UPLOAD_SUCCESS 的减速器)。
问题:这种方法有多糟糕?我必须直接执行 http 请求(而不是通过中间件)吗?
回答我自己的问题,是的,这是不好的做法,因为即使组件的属性没有改变,组件也会被重新渲染
从 redux-thunk 中间件发送 http 请求是否是个好主意,即使这个 http 请求没有修改商店? 这是一些解释我的意思的代码:
export const CONFIRM_UPLOAD_REQUEST = 'CONFIRM_UPLOAD_REQUEST';
export const CONFIRM_UPLOAD_SUCCESS = 'CONFIRM_UPLOAD_SUCCESS';
export const CONFIRM_UPLOAD_FAILURE = 'CONFIRM_UPLOAD_FAILURE';
function _confirmUpload() {
return {
[CALL_API]: {
types: [CONFIRM_UPLOAD_REQUEST, CONFIRM_UPLOAD_SUCCESS, CONFIRM_UPLOAD_FAILURE],
requestMethod: 'POST',
endpoint: `upload/confirm`
}
};
}
export function confirmUpload() {
return (dispatch) => dispatch(_confirmUpload());
}
当我发送此操作时,我的中间件将执行 POST upload/confirm 请求。它不会修改商店(所以我没有 CONFIRM_UPLOAD_SUCCESS 的减速器)。
问题:这种方法有多糟糕?我必须直接执行 http 请求(而不是通过中间件)吗?
回答我自己的问题,是的,这是不好的做法,因为即使组件的属性没有改变,组件也会被重新渲染