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() {