javascript - 将数据保存到 redux 与对后端进行 API 调用

标签 javascript reactjs redux redux-thunk

所以我有一个依赖 redux-thunk 和 Express 后端的应用程序。同时获取数据和发出发布请求是否被认为是好的做法?

这是一个代码示例:

export const getProducts = () => async (dispatch) => {
  const { data } = await API.getProducts();
  dispatch({ type: 'GET_PRODUCTS', payload: data });
};

export const createProduct = (proData) => async (dispatch) => {
  const { data, status } = await API.createProduct(proData);
  if (status === 200) {
    dispatch(getProducts());
  }
};

最佳答案

是的,大多数情况下都可以。

您还可以考虑在 Express api 的响应中返回新产品,并在 createProduct 完成后将其添加到 redux,如下所示:

export const createProduct = (proData) => async (dispatch) => {
  const { data, status } = await API.createProduct(proData);
  if (status === 200) {
    // add product to state
    dispatch(productCreated(data));
  }
};

更高级的选项是通过在请求完成之前分派(dispatch)事件来乐观地更新您的商店(和 UI)。

export const createProduct = (proData) => async (dispatch) => {
  dispatch(productCreatedPending(proData));
  const { data, status } = await API.createProduct(proData);
  if (status !== 200) {
    // Handle error by dispatching another action to fix the state
    // or however you want
  }
};

取决于您希望 UI 如何工作

关于javascript - 将数据保存到 redux 与对后端进行 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68092807/

相关文章:

javascript - "done"body向上滚动时Pace Js

javascript - React - 将图标添加到组件内的标题

react-native - TextInput 通过引用获取值 react native

javascript - 你如何在 React 中使用子组件实现 "check all"?

javascript - 在 React/Redux 中,如何在 componentDidMount 中调用相同的 fetch 两次,并使用结果设置 2 个状态变量

javascript - 页面重新加载后无法从 redux 存储中获取数据

javascript正则表达式匹配仅返回最后一个匹配

javascript - 如何设置定义为 CSS 类的背景颜色(最终使用 JQuery)?

javascript - 如何知道对象的标签类型?

javascript - 如何使用 react-spring 滚动到一个元素?