减速器中的 Redux 状态不是最新的?

乔希

我正在使用 React/Redux 构建应用程序,我有一系列产品,它们异步加载到 Redux 状态,然后我想从中提取单个产品。但是,我编写的用于执行此操作的 reducer 无法正常工作,因为它将状态注册为null. 这让我感到困惑,因为getState()在返回动作之前调用thunk 动作创建者并触发减速器正在记录产品数组的正确状态。

这是我的代码中的错误还是只是 redux 状态更新的一部分?

动作创建者:getSingleProduct

export const getSingleProduct = productName => (dispatch, getState) => {
  const action = { type: 'GET_SINGLE_PRODUCT', productName };
  if (!getState().products.length) return dispatch(getAllProducts())
    .then(() => {
      console.log('STATE IN ACTION CREATOR THEN BLOCK', getState());
      return dispatch(action);
    })
    .catch(console.log);
  else return action;
}

减速器:当前产品

const currentProduct = (state = null, action) => {
switch (action.type) {
    case 'GET_SINGLE_PRODUCT':
      console.log('STATE IN REDUCER', state);
      return state.products.filter(prod => prod.name.toLowerCase() === action.productName)[0];
      break;
    default:
      return state;
  }
}

控制台日志输出

STATE IN ACTION CREATOR THEN BLOCK 
{ basket: Array(0), products: Array(6), currentProduct: null }


STATE IN REDUCER
null
乔希

减速器状态实际上是最新的,问题是对减速器状态如何工作的误解。我试图利用从statereducer参数中无法获得的依赖状态我的解决方案是将这些信息从依赖状态传递到操作对象中。

行动

export const getSingleProduct = (productName, products = []) => (dispatch, getState) => {
  let action = {
    type: 'GET_SINGLE_PRODUCT',
    productName,
    products: getState().products
  }
  if (!action.products.length) dispatch(getAllProducts())
    .then(() => {
      action = Object.assign({}, action, { products: getState().products });
      dispatch(action);
    })
    .catch(console.log);
  else return action;
}

减速器

const currentProduct = (state = {}, action) => {
  switch (action.type) {
    case 'GET_SINGLE_PRODUCT':
      const currentProduct = action.products.filter(prod => prod.name.toLowerCase() === action.productName)[0];
      return Object.assign({}, state, currentProduct);
    default:
      return state;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

减速器不更新反应 redux 中的状态

来自分类Dev

如何返回Redux减速器的状态

来自分类Dev

如何模拟状态中的数据以测试从状态中删除的 Redux 减速器?

来自分类Dev

React Redux-减速器之间的共享状态(减速器层次结构)

来自分类Dev

如何使用 Redux 在减速器中根据您的状态修改子对象

来自分类Dev

Redux减速器状态突变和恢复初始状态

来自分类Dev

Redux –减速器,取决于其他状态

来自分类Dev

Redux动作/减速器与直接设置状态

来自分类Dev

Redux减速器-更改深度嵌套的状态

来自分类Dev

redux-减速器状态为空

来自分类Dev

Redux动作/减速器与直接设置状态

来自分类Dev

Redux 存储无法从减速器获取状态

来自分类Dev

Redux:区分减速器中的对象

来自分类Dev

redux 减速器中的打字稿

来自分类Dev

如何在不遍历状态的情况下访问减速器中的 redux 状态数组属性

来自分类Dev

反应在父级减速器与子级减速器中完成的Redux逻辑

来自分类Dev

在redux中是否可以嵌套化径减速器?

来自分类Dev

减速器未在Redux中接收动作

来自分类Dev

在Redux中嵌套/组合合并的减速器?

来自分类Dev

减速器中Redux有效负载的问题

来自分类Dev

在Typescripted Redux中,如何找到根减速器的类型?

来自分类Dev

减速器未在触发操作时更新状态,因此Redux存储/状态未更新

来自分类Dev

我是否应该根据发出的调用来组织我的React Redux减速器组成,或者根据减速器管理的状态来组织我的React Redux减速器组成?

来自分类Dev

我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

来自分类Dev

为什么我的Redux减速器认为我的状态未定义?

来自分类Dev

Redux:减速器收到的先前状态具有意外的“函数”类型

来自分类Dev

为什么我的Redux减速器认为我的状态未定义?

来自分类Dev

Redux 存储在减速器名称下具有多个“版本”状态

来自分类Dev

在 redux 中,一个减速器正在改变另一个减速器

Related 相关文章

  1. 1

    减速器不更新反应 redux 中的状态

  2. 2

    如何返回Redux减速器的状态

  3. 3

    如何模拟状态中的数据以测试从状态中删除的 Redux 减速器?

  4. 4

    React Redux-减速器之间的共享状态(减速器层次结构)

  5. 5

    如何使用 Redux 在减速器中根据您的状态修改子对象

  6. 6

    Redux减速器状态突变和恢复初始状态

  7. 7

    Redux –减速器,取决于其他状态

  8. 8

    Redux动作/减速器与直接设置状态

  9. 9

    Redux减速器-更改深度嵌套的状态

  10. 10

    redux-减速器状态为空

  11. 11

    Redux动作/减速器与直接设置状态

  12. 12

    Redux 存储无法从减速器获取状态

  13. 13

    Redux:区分减速器中的对象

  14. 14

    redux 减速器中的打字稿

  15. 15

    如何在不遍历状态的情况下访问减速器中的 redux 状态数组属性

  16. 16

    反应在父级减速器与子级减速器中完成的Redux逻辑

  17. 17

    在redux中是否可以嵌套化径减速器?

  18. 18

    减速器未在Redux中接收动作

  19. 19

    在Redux中嵌套/组合合并的减速器?

  20. 20

    减速器中Redux有效负载的问题

  21. 21

    在Typescripted Redux中,如何找到根减速器的类型?

  22. 22

    减速器未在触发操作时更新状态,因此Redux存储/状态未更新

  23. 23

    我是否应该根据发出的调用来组织我的React Redux减速器组成,或者根据减速器管理的状态来组织我的React Redux减速器组成?

  24. 24

    我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

  25. 25

    为什么我的Redux减速器认为我的状态未定义?

  26. 26

    Redux:减速器收到的先前状态具有意外的“函数”类型

  27. 27

    为什么我的Redux减速器认为我的状态未定义?

  28. 28

    Redux 存储在减速器名称下具有多个“版本”状态

  29. 29

    在 redux 中,一个减速器正在改变另一个减速器

热门标签

归档