我有一個react-redux應用程序,它包含一個提供數據的表組件和一個通過下拉列表過濾數據的過濾組件。我需要更改我的應用程序,以便每次使用下拉菜單進行選擇時都可以從後端接收數據。我有以下內容:組件,縮減器,動作創建器,mapStateToProps和mapDispatchToProps。我應該在哪個後端調用?從React Redux調用後端
0
A
回答
2
您可以使用redux midleware在您的操作中暴露api客戶端。
我的終極版中間件:
export default function clientMiddleware(client) {
return ({ dispatch, getState }) => next => action => {
if (typeof action === 'function') {
return action(dispatch, getState);
}
const { promise, types, ...rest } = action; // eslint-disable-line no-redeclare
if (!promise) {
return next(action);
}
const [REQUEST, SUCCESS, FAILURE] = types;
next({ ...rest, type: REQUEST });
const { auth } = getState();
client.setJwtToken(auth.token || null);
const actionPromise = promise(client, dispatch);
actionPromise.then(
result => next({ ...rest, result, type: SUCCESS }),
error => next({ ...rest, error, type: FAILURE })
).catch((error) => {
console.error('MIDDLEWARE ERROR:', error);
next({ ...rest, error, type: FAILURE });
});
return actionPromise;
};
}
其在動作使用:
const SAVE = 'redux-example/widgets/SAVE';
const SAVE_SUCCESS = 'redux-example/widgets/SAVE_SUCCESS';
const SAVE_FAIL = 'redux-example/widgets/SAVE_FAIL';
export function save(widget) {
return {
types: [SAVE, SAVE_SUCCESS, SAVE_FAIL],
id: widget.id, // additionnal data for reducer
promise: client => client.post('/widget/update', {
data: widget
})
};
}
// in reducer:
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
case SAVE:
return state;
case SAVE_SUCCESS:
// you can use action.result and action.id here
return state;
case SAVE_FAIL:
// and you can use action.error and action.id here
return state;
default:
return state;
}
}
最後,你必須通過這一行動與mapDispatchToProps您的組件。
希望能幫助你
0
我使用基於丹阿布拉莫夫的例子了Redux-API中間件https://github.com/agraboso/redux-api-middleware 。
相關問題
- 1. react-redux不調度thunk api調用
- 2. 調試「react-redux」應用程序?
- 3. 如何在react-redux中調用函數
- 4. React/Redux調度功能不起作用
- 5. 使用react redux從異步API調用獲取數據
- 6. 使用React/Redux + Moment.JS
- 7. React,React Redux,Redux表單類型無效
- 8. 在AJAX調用後更新Redux InitialValues
- 9. React/Redux - 在服務器端呈現頁面後滾動div
- 10. 如何在從React&Redux&Thunk獲取端點數據後呈現div
- 11. React Js如何從兩個React Redux字段調用相同的函數?
- 12. React Redux連接()與Redux thunk
- 13. react,redux - 使用redux修改父組件
- 14. React Native + Redux
- 15. LocalStorage與react-redux
- 16. InfiniteLoader和react-redux
- 17. React Router + Redux?
- 18. React ReRender in Redux
- 19. React Redux Lifecycle Props
- 20. React-Redux list
- 21. React Redux Confusion
- 22. React/Redux - mapStateToProps
- 23. Redux // React組件在動作調度後渲染兩次
- 24. Asp.Net Core React + Redux教程或什麼是React,React + Redux和ReactJs.net?
- 25. React Redux和react-router-dom
- 26. React Native,最小化後的Redux商店
- 27. 根組件的React/Redux調度操作?
- 28. React-Redux |調度員不工作
- 29. 簽署API從前端調用後端
- 30. React Redux + Socket.IO +創建React應用程序
你可以從你的'action creators'或'component'本身調用它,或者你可以想到的任何其他方法/地方。我不建議從**'reducers' **,'mapStateToProps '或'mapDispatchToProps' –
看看redux-thunk庫。它的作用是允許你編寫返回函數的動作創建者,當調用這些動作創建者時,它也會調用函數並傳遞redux派發方法。 然後,您可以使用mapDispatchToProps中間件,通過道具傳遞這些動作創建者,並且可以從組件中調用它們。然後,您可以針對檢索事件進行操作,這可以在請求回調到後端的過程中分派。然後Reducer將處理來自該動作的數據存儲,並且當道具更新時,您已更新組件中的數據。 –