为什么react-redux需要丑陋的黑客重新渲染redux-form?

时间:2017-03-06 06:32:04

标签: javascript reactjs redux redux-form

我有一个使用redux商店的反应应用程序,该组件也使用redux-form。我在一个特定类型的更新中看到一个奇怪的行为,我想触发后续更新。

基本上,用户正在更新表单上某些内容的权限,然后保存。保存提交表单并在处理操作时触发另一个操作(获取所有事件的列表)。从服务器返回列表时,将调度操作以更新列表UI。此时,我正在更新表单的redux存储中的属性,以触发更新当前编辑事物的权限。这是我能做到这一点的唯一一点,因为我们现在有了触发此请求的信息。

问题是布尔标志被设置为触发器,并且mapStateToProps被更新标志调用,但随后不会调用该组件(shouldComponentUpdate和componentWillUpdate永远不会被调用)。它就像忽略了道具中布尔变量的状态。

我发现如果在mapStateToProps中我设置了另一个属性 布尔触发器,然后更新组件(重新渲染)。

function mapStateToProps(store, ownProps) {

  ...

  let triggerFetchSomethingOwnershipHash = 0;
  if (store.triggerFetchSomethingOwnership) {
    triggerFetchSomethingOwnershipHash = 100000 * Math.random();
  }

  return {
    ...
    triggerFetchSomethingOwnership,
    triggerFetchSomethingOwnershipHash 
  }
}

...
const ConnectedSomethingDetail = connect(mapStateToProps)(SomethingForm);
export default ConnectedSomethingDetail;

为什么我需要这样做?我该如何避免呢?

是的,我已经检查了一些相关的SO问题,例如react-redux-component-does-not-rerender-on-store-state-changereact-redux-update-item-in-array-doesnt-re-render

0 个答案:

没有答案