我试图在减速机中执行此操作;
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 find
Array.map
内部,但我不明白为什么这是一个问题。我没有有意识地做任何事情,所以我很难解决它找到解决方案。
编辑:如果相关,请按照以下方式发送操作;
return syncChangedItemsToDB(itemsChanged).then((resp) => {
dispatch({type: actions.DATA_RETURNED, resp});
});
有谁知道导致此警告的原因以及如何解决此问题?
答案 0 :(得分:1)
如果我使用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;
});