From afce002d90845a828b14dc9029715cc7f2f66816 Mon Sep 17 00:00:00 2001 From: Martin Krulis Date: Tue, 23 Jan 2018 18:38:59 +0100 Subject: [PATCH] Improving resource renderer for better caching. --- .../helpers/ResourceRenderer/ResourceRenderer.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/helpers/ResourceRenderer/ResourceRenderer.js b/src/components/helpers/ResourceRenderer/ResourceRenderer.js index a601a8bc0..545d75549 100644 --- a/src/components/helpers/ResourceRenderer/ResourceRenderer.js +++ b/src/components/helpers/ResourceRenderer/ResourceRenderer.js @@ -74,12 +74,18 @@ class ResourceRenderer extends Component { this.oldResources === null || !shallowResourcesEqual(this.oldResources, resources) ) { - this.oldResources = resources; this.oldData = resources .filter(res => !isDeleting(res)) .filter(res => !isDeleted(res)) .filter(res => !isPosting(res)) - .map(getJsData); + .map( + (res, idx) => + // If a particular resource did not change, re-use its old data + this.oldResources && this.oldResources[idx] === res + ? this.oldData[idx] + : getJsData(res) + ); + this.oldResources = resources; } return returnAsArray ? ready(this.oldData) : ready(...this.oldData); }; @@ -89,7 +95,6 @@ class ResourceRenderer extends Component { noIcons = false, loading = defaultLoading(noIcons), failed = defaultFailed(noIcons), - // children: ready, resource, hiddenUntilReady = false, forceLoading = false