From 69503b6ebaf7106dd928a14ce82c23a81ac5fdcf Mon Sep 17 00:00:00 2001 From: Bret Little Date: Fri, 3 Dec 2021 13:41:01 -0500 Subject: [PATCH] fix: only use instances singleton within the browser --- src/HelmetData.js | 15 +++++++++------ src/Provider.js | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/HelmetData.js b/src/HelmetData.js index a8e50bce..7885abf4 100644 --- a/src/HelmetData.js +++ b/src/HelmetData.js @@ -7,26 +7,29 @@ export function clearInstances() { } export default class HelmetData { + instances = []; + value = { setHelmet: serverState => { this.context.helmet = serverState; }, helmetInstances: { - get: () => instances, + get: () => (this.canUseDOM ? instances : this.instances), add: instance => { - instances.push(instance); + (this.canUseDOM ? instances : this.instances).push(instance); }, remove: instance => { - const index = instances.indexOf(instance); - instances.splice(index, 1); + const index = (this.canUseDOM ? instances : this.instances).indexOf(instance); + (this.canUseDOM ? instances : this.instances).splice(index, 1); }, }, }; - constructor(context) { + constructor(context, canUseDOM = typeof document !== 'undefined') { this.context = context; + this.canUseDOM = canUseDOM; - if (!HelmetData.canUseDOM) { + if (!canUseDOM) { context.helmet = mapStateOnServer({ baseTag: [], bodyAttributes: {}, diff --git a/src/Provider.js b/src/Provider.js index 36432877..a23e7546 100644 --- a/src/Provider.js +++ b/src/Provider.js @@ -36,7 +36,7 @@ export default class Provider extends Component { constructor(props) { super(props); - this.helmetData = new HelmetData(this.props.context); + this.helmetData = new HelmetData(this.props.context, Provider.canUseDOM); } render() {