[英]Dispatch not sending the action to the reducer
我有一個反應 redux 應用程序,我在將操作分派給減速器時遇到問題。 這就是我的 actions.js
import GetDataFromAPIs from "../utils/api-data";
export const UPDATE_DATA = 'UPDATE_DATA';
export const updateData = async => {
const newData = await GetDataFromAPIs();
return{
type: UPDATE_DATA,
payload: newData
};
};
這就是我從 index.js 調用updateData的方式:
const menuStore = createStore(MyReducer, composeWithDevTools(applyMiddleware(thunk)));
menuStore.dispatch(applyMiddleware(thunk)(updateData));
我可以單步執行actions.js,但我沒有看到menuStore.dispatch 將操作發送到reducer。 我錯過了什么?
使用 thunk 中間件時,您需要將“thunk”傳遞給調度 function。
首先,thunk 需要一些修改。 正如文檔所說here
thunk 是 function 包裝表達式以延遲其評估
因此需要如下改變thunk。
export const updateData = async (dispatch)=> {
const newData = await GetDataFromAPIs();
dispatch({
type: UPDATE_DATA,
payload: newData
});
};
現在將此 thunk 傳遞給store.dispatch()
function。
menuStore.dispatch(updateData);
menuStore.dispatch(updateData())
中調用該操作,而不僅僅是傳遞引用export const updateData = inputData => async dispatch => {
const newData = await GetDataFromAPIs();
dispatch({
type: UPDATE_DATA,
payload: newData
})
};
用法
menuStore.dispatch(updateData())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.