diff --git a/internal_packages/thread-list/lib/empty-state.cjsx b/internal_packages/thread-list/lib/empty-state.cjsx index e951f9b9c..4d7f139ce 100644 --- a/internal_packages/thread-list/lib/empty-state.cjsx +++ b/internal_packages/thread-list/lib/empty-state.cjsx @@ -82,6 +82,12 @@ class EmptyState extends React.Component @_unlisteners.push NamespaceStore.listen(@_onNamespacesChanged, @) @_onNamespacesChanged() + shouldComponentUpdate: (nextProps, nextState) -> + # Avoid deep comparison of dataView, which is a very complex object + return true if nextProps.visible isnt @props.visible + return true if nextProps.dataView isnt @props.dataView + return not _.isEqual(nextState, @state) + _onNamespacesChanged: -> namespace = NamespaceStore.current() @_worker = NylasAPI.workerForNamespace(namespace) diff --git a/internal_packages/thread-list/lib/thread-list-icon.cjsx b/internal_packages/thread-list/lib/thread-list-icon.cjsx index 2d0e1ea28..b9dc25fe8 100644 --- a/internal_packages/thread-list/lib/thread-list-icon.cjsx +++ b/internal_packages/thread-list/lib/thread-list-icon.cjsx @@ -39,6 +39,10 @@ class ThreadListIcon extends React.Component msgs = _.filter msgs, (m) -> m.isSaved() and not m.draft return msgs + shouldComponentUpdate: (nextProps) => + return false if nextProps.thread is @props.thread + true + render: =>
diff --git a/internal_packages/thread-list/lib/thread-list-participants.cjsx b/internal_packages/thread-list/lib/thread-list-participants.cjsx index ea73f3fd8..cb1125d92 100644 --- a/internal_packages/thread-list/lib/thread-list-participants.cjsx +++ b/internal_packages/thread-list/lib/thread-list-participants.cjsx @@ -8,6 +8,10 @@ class ThreadListParticipants extends React.Component @propTypes: thread: React.PropTypes.object.isRequired + shouldComponentUpdate: (nextProps) => + return false if nextProps.thread is @props.thread + true + render: => items = @getParticipants()