2016-09-29 15 views
2

私は減速機でこれをしようとしています。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を設定しない限り。ですから、問題は、減量剤の中でのArray.mapを使用しようとしているようですが、なぜそれが問題なのか分かりません。私は意識的にイベントで何かをしているわけではないので、私は解決策を見つけるためにそれを回避するのに苦労している。

編集:関連する場合は、ここでアクションをディスパッチします。

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

誰もがこの警告の原因とその回避方法を知っていますか?

+0

あなたのコードにはイベントが表示されません。あなたの行動を派遣する場所にコードを表示できますか? – Maxx

+0

私はアクションをディスパッチしている方法で質問を更新しました。私のコードは動いています。私は以下の答えを追加しますが、私はまだ詳しい説明を探しています。 –

答えて

1

lodashのfindの結果をコピーするのにObject.assignを使用すると、問題なく動作するように見えるので、このコードは機能します。私はそれがなぜ必要なのかまだ分からないので、どんな説明も感謝します。

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