Redux 商店更新后,React 组件未收到道具

咳咳

什么工作:

  • Saga 从 API 中提取数据。reducer forUPDATE_LOTS启动并返回新状态。
  • Redux 存储更新为正确的数据,可以在 chrome 扩展和日志中观察到。

什么不起作用:

  • componentDidUpdate永远不会触发了。componentWillReceiveProps被它取代时也不会
  • 由于组件从未收到更新,因此也没有重新渲染。

关于这个主题的大部分建议都讨论了人们如何意外地改变状态,但在我的情况下,我不这样做。我还尝试了以下构造,{...state, lots: action.data}而不是使用 ImmutableJS Map.set,但没有运气。

有任何想法吗?此处未列出 saga 文件,因为该部分数据流运行良好。

组件:

class Lots extends React.Component {
  constructor(props) {
    super(props);

    this.props.onFetchLots();
  }

  componentDidUpdate() {
    console.log('updated', this.props.lots);
  }

  render() {
    const lots = this.props.lots;
    console.log('render', lots);
    return (lots && lots.length) > 0 ? <Tabs data={lots} /> : <div />;
  }
}

映射和组合:

function mapDispatchToProps(dispatch) {
  return {
    onFetchLots: () => {
      dispatch(fetchLots());
    },
  };
}

function mapStateToProps(state) {
  return {
    lots: state.lots,
  };
}

const withConnect = connect(
  mapStateToProps,
  mapDispatchToProps,
);

const withReducer = injectReducer({ key: 'lots', reducer: lotsReducer });
const withSaga = injectSaga({ key: 'lots', saga });

export default compose(
  withReducer,
  withSaga,
  withConnect,
)(Lots);

减速器:

export const initialState = fromJS({
  lots: false,
});

function lotsReducer(state = initialState, action) {
  switch (action.type) {
    case FETCH_LOTS:
      console.log('fetch lots');
      return state;

    case UPDATE_LOTS:
      console.log('update lots', action.data.data);
      return state.set('lots', action.data.data);

      default:
      return state;
  }
}
咳咳

除了mapStateToProps功能之外,一切都是正确的

由于使用了 ImmutableJS,我不得不访问 state 属性state.get("lots")而不是state.lots.

这样做解决了问题。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React Native 子组件未收到更新的道具

来自分类Dev

组件道具更改后更新Redux存储

来自分类Dev

调用操作后未更新 React 原生 redux 道具

来自分类Dev

React Redux传递状态作为组件的道具

来自分类Dev

React Native Redux 商店正确分派减速器,但不更新 UI 组件

来自分类Dev

在redux状态的语言环境更新后重新渲染React组件

来自分类Dev

填充Redux存储后React组件未更新

来自分类Dev

React + Redux-状态更改后组件不会更新

来自分类Dev

在redux状态的语言环境更新后重新渲染React组件

来自分类Dev

React + Redux在组件更新后做一些事情

来自分类Dev

React + Redux:组件不更新

来自分类Dev

React redux 不更新组件

来自分类Dev

功能组件上的React-Redux + Redux-Thunk。从API提取数据后更新UI

来自分类Dev

“在上下文或道具中都找不到“商店””我在尝试简单的 react-redux 代码时收到此错误

来自分类Dev

React 组件接收到错误的道具值

来自分类Dev

Redux与React-与组件共享商店的正确方法

来自分类Dev

react-redux 更新 redux 存储但不更新组件状态

来自分类Dev

Redux不更新商店

来自分类常见问题

将道具传递给react-redux容器组件

来自分类Dev

React-Redux:即使道具更改,组件也不会重新渲染

来自分类Dev

使用特定道具进行连接组件测试(React/Redux)

来自分类Dev

React:将 formData 道具合并到组件的状态(Redux)

来自分类Dev

React Redux:我的React组件没有收到更新的数组作为prop

来自分类Dev

react-redux 道具未更新

来自分类Dev

商店初始化后更新redux reducer

来自分类Dev

更改商店后,响应redux UI不更新

来自分类Dev

React + Redux:商店更新时如何更新状态

来自分类Dev

Redux - 通过 Redux 更新父母道具?

来自分类Dev

Redux不更新组件

Related 相关文章

  1. 1

    React Native 子组件未收到更新的道具

  2. 2

    组件道具更改后更新Redux存储

  3. 3

    调用操作后未更新 React 原生 redux 道具

  4. 4

    React Redux传递状态作为组件的道具

  5. 5

    React Native Redux 商店正确分派减速器,但不更新 UI 组件

  6. 6

    在redux状态的语言环境更新后重新渲染React组件

  7. 7

    填充Redux存储后React组件未更新

  8. 8

    React + Redux-状态更改后组件不会更新

  9. 9

    在redux状态的语言环境更新后重新渲染React组件

  10. 10

    React + Redux在组件更新后做一些事情

  11. 11

    React + Redux:组件不更新

  12. 12

    React redux 不更新组件

  13. 13

    功能组件上的React-Redux + Redux-Thunk。从API提取数据后更新UI

  14. 14

    “在上下文或道具中都找不到“商店””我在尝试简单的 react-redux 代码时收到此错误

  15. 15

    React 组件接收到错误的道具值

  16. 16

    Redux与React-与组件共享商店的正确方法

  17. 17

    react-redux 更新 redux 存储但不更新组件状态

  18. 18

    Redux不更新商店

  19. 19

    将道具传递给react-redux容器组件

  20. 20

    React-Redux:即使道具更改,组件也不会重新渲染

  21. 21

    使用特定道具进行连接组件测试(React/Redux)

  22. 22

    React:将 formData 道具合并到组件的状态(Redux)

  23. 23

    React Redux:我的React组件没有收到更新的数组作为prop

  24. 24

    react-redux 道具未更新

  25. 25

    商店初始化后更新redux reducer

  26. 26

    更改商店后,响应redux UI不更新

  27. 27

    React + Redux:商店更新时如何更新状态

  28. 28

    Redux - 通过 Redux 更新父母道具?

  29. 29

    Redux不更新组件

热门标签

归档