code: function () {
      var hasComponentChanged;
  
      // Store the previous old data before we calculate the new oldData.
      if (this.previousOldData instanceof Object) {
        utils.objectPool.clearObject(this.previousOldData);
      }
      if (this.isObjectBased) {
        copyData(this.previousOldData, this.oldData);
      } else {
        this.previousOldData = this.oldData;
      }
  
      hasComponentChanged = !utils.deepEqual(this.oldData, this.data);
  
      // Don't update if properties haven't changed.
      // Always update rotation, position, scale.
      if (!this.isPositionRotationScale && !hasComponentChanged) { return; }
  
      // Store current data as previous data for future updates.
      // Reuse `this.oldData` object to try not to allocate another one.
      if (this.oldData instanceof Object) { utils.objectPool.clearObject(this.oldData); }
      this.oldData = extendProperties(this.oldData, this.data, this.isObjectBased);
  
      // Update component with the previous old data.
      this.update(this.previousOldData);
  
      this.throttledEmitComponentChanged();
    }
docs: Check if component should fire update and fire update lifecycle handler.