2016-09-29 3 views
2

나는 감속기에서 이것을하려고합니다.내 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의 find 내부를 감속기에 넣으려고 시도하는 것 같지만, 왜 이것이 문제인지 이해할 수 없습니다. 나는 의식적으로 사건으로 어떤 일도하지 않기 때문에 해결책을 찾기 위해 의식적으로 노력하고 있습니다.

편집 : 관련성이있는 경우 여기에 작업을 전달하는 방법이 나와 있습니다.

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

이 경고의 원인과 해결 방법을 알고있는 사람이 있습니까?

+0

이벤트에 대한 반응이므로 코드에 이벤트가 표시되지 않습니다. 행동을 파견하는 곳에서 코드를 보여줄 수 있습니까? – Maxx

+0

나는 내가 어떻게 행동을 파견하는지에 대한 나의 질문을 업데이트했다. 내 코드가 작동하는 것으로 밝혀졌습니다. 아래에 답변을 추가하겠습니다. 그러나 나는 아직도 더 많은 설명을 원합니다. –

답변

1

로다시의 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; 
}); 
관련 문제