为什么我在我的React Redux减速器中得到一个关于合成事件的警告



我正在尝试在减速机中做到这一点;

case actions.DATA_RETURNED:
  newState = Object.assign({}, state);
  newState.status = 'complete';
  if (resp) {
    var newItems = newState.items.map(item => {
      var newItem = Object.assign({}, item);
      var match = _.find(resp, { id: item._id });
      newItem._rev = match.rev;
      return newItem;
    });
   }
  break;

我试过几种变体,但都失败了;

warning.js:36 Warning: This synthetic event is reused for performance reasons. If you're seeing this, you're accessing the property cancelable on a released/nullified synthetic event. This is set to null. If you must keep the original synthetic event around, use event.persist(). See https://facebook.github.io/react/docs/events.html#event-pooling for more information.

除非我删除newItem._rev = match.rev或将match设置为硬编码字符串。所以似乎问题是试图在减速机中使用lodash的findArray.map内,但我不明白为什么这是一个问题。我没有有意识地处理事件,所以我很难找到一个解决方案。

编辑:如果它是相关的,这是我如何调度动作;

return syncChangedItemsToDB(itemsChanged).then((resp) => {
  dispatch({type: actions.DATA_RETURNED, resp});
});

有谁知道是什么原因导致了这个警告,我怎么能解决它?

如果我使用Object.assign来复制lodash的find的结果,事情似乎没有问题,所以这段代码可以工作。我仍然不确定为什么有必要,所以任何解释都会很感激。

newItems = newState.items.map(item => {
  var match = Object.assign({}, _.find(resp, { id: item._id }));
  if (match.rev) item._rev = match.rev;
  return item;
});

相关内容

  • 没有找到相关文章

最新更新