diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 0bb5c9e9be..921680b678 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -67,6 +67,9 @@ const RoomSubList = createReactClass({ // some values to get LazyRenderList starting scrollerHeight: 800, scrollTop: 0, + // React 16's getDerivedStateFromProps(props, state) doesn't give the previous props so + // we have to store the length of the list here so we can see if it's changed or not... + listLength: null, }; }, @@ -79,11 +82,20 @@ const RoomSubList = createReactClass({ }; }, - componentWillMount: function() { + componentDidMount: function() { this._headerButton = createRef(); this.dispatcherRef = dis.register(this.onAction); }, + statics: { + getDerivedStateFromProps: function(props, state) { + return { + listLength: props.list.length, + scrollTop: props.list.length === state.listLength ? state.scrollTop : 0, + }; + }, + }, + componentWillUnmount: function() { dis.unregister(this.dispatcherRef); },