我試圖圍繞訪問Redux actionCreators中的狀態;而是做了以下操作(在reducer中執行ajax操作)。爲什麼我需要爲此訪問狀態 - 因爲我想用存儲在狀態中的CSRF令牌執行ajax。在Redux Reducer中執行Ajax提取?
有人可以告訴我,如果以下被認爲是不好的做法/反模式?
export const reducer = (state = {} , action = {}) => {
case DELETE_COMMENT: {
// back-end ops
const formData = new FormData();
formData.append('csrf' , state.csrfToken);
fetch('/delete-comment/' + action.commentId , {
credentials:'include' ,
headers:new Headers({
'X-Requested-With':'XMLHttpRequest'
}) ,
method:'POST' ,
body:formData
})
// return new state
return {
...state ,
comments:state.comments.filter(comment => comment.id !== action.commentId)
};
}
default: {
return state;
}
}
非常感謝您對&@ WitVault的澄清,你們倆都說了很多道理。我用thunk實現了異步操作;但是,我無法弄清楚的是,如何進行api調用(提取),但在提取時將狀態數據添加到我的POST變量中?例如:CSRF令牌? – sammysaglam
@sammysaglam查看更新的答案。你可以有第二個參數,它是一個函數'getState',它將返回基本狀態對象。 – Matthew
工作!驚人!非常感謝!我正試圖弄清楚現在好一個小時! – sammysaglam