Revert "Revert "Merge pull request #193 from matrix-org/rav/shouldComponentUpdates""
Put the shouldComponentUpdate methods back in, now that Matthew has stopped
demoing.
This reverts commit 606fdcb8df.
			
			
				pull/21833/head
			
			
		
							parent
							
								
									a9da0a014e
								
							
						
					
					
						commit
						393e8ff612
					
				|  | @ -77,3 +77,34 @@ module.exports.getKeyValueArrayDiffs = function(before, after) { | |||
| 
 | ||||
|     return results; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Shallow-compare two objects for equality: each key and value must be | ||||
|  * identical | ||||
|  */ | ||||
| module.exports.shallowEqual = function(objA, objB) { | ||||
|     if (objA === objB) { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     if (typeof objA !== 'object' || objA === null || | ||||
|           typeof objB !== 'object' || objB === null) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     var keysA = Object.keys(objA); | ||||
|     var keysB = Object.keys(objB); | ||||
| 
 | ||||
|     if (keysA.length !== keysB.length) { | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     for (var i = 0; i < keysA.length; i++) { | ||||
|         var key = keysA[i]; | ||||
|         if (!objB.hasOwnProperty(key) || objA[key] !== objB[key]) { | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return true; | ||||
| }; | ||||
|  |  | |||
|  | @ -38,6 +38,7 @@ var SlashCommands = require("../../SlashCommands"); | |||
| var dis = require("../../dispatcher"); | ||||
| var Tinter = require("../../Tinter"); | ||||
| var rate_limited_func = require('../../ratelimitedfunc'); | ||||
| var ObjectUtils = require('../../ObjectUtils'); | ||||
| 
 | ||||
| var DEBUG = false; | ||||
| 
 | ||||
|  | @ -164,6 +165,11 @@ module.exports = React.createClass({ | |||
|         } | ||||
|     }, | ||||
| 
 | ||||
|     shouldComponentUpdate: function(nextProps, nextState) { | ||||
|         return (!ObjectUtils.shallowEqual(this.props, nextProps) || | ||||
|                 !ObjectUtils.shallowEqual(this.state, nextState)); | ||||
|     }, | ||||
| 
 | ||||
|     componentWillUnmount: function() { | ||||
|         // set a boolean to say we've been unmounted, which any pending
 | ||||
|         // promises can use to throw away their results.
 | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ var EventTimeline = Matrix.EventTimeline; | |||
| var sdk = require('../../index'); | ||||
| var MatrixClientPeg = require("../../MatrixClientPeg"); | ||||
| var dis = require("../../dispatcher"); | ||||
| var ObjectUtils = require('../../ObjectUtils'); | ||||
| 
 | ||||
| var PAGINATE_SIZE = 20; | ||||
| var INITIAL_SIZE = 20; | ||||
|  | @ -146,6 +147,11 @@ var TimelinePanel = React.createClass({ | |||
|         } | ||||
|     }, | ||||
| 
 | ||||
|     shouldComponentUpdate: function(nextProps, nextState) { | ||||
|         return (!ObjectUtils.shallowEqual(this.props, nextProps) || | ||||
|                 !ObjectUtils.shallowEqual(this.state, nextState)); | ||||
|     }, | ||||
| 
 | ||||
|     componentWillUnmount: function() { | ||||
|         // set a boolean to say we've been unmounted, which any pending
 | ||||
|         // promises can use to throw away their results.
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Richard van der Hoff
						Richard van der Hoff