UNPKG

react-document-title

Version:

A declarative, nested, stateful document.title for React

49 lines (38 loc) 1 kB
'use strict'; var React = require('react'), createSideEffect = require('react-side-effect'); var _serverTitle = null; function getTitleFromPropsList(propsList) { var innermostProps = propsList[propsList.length - 1]; if (innermostProps) { return innermostProps.title; } } var SetDocumentTitle = createSideEffect(function handleChange(propsList) { var title = getTitleFromPropsList(propsList); if (typeof document !== 'undefined') { document.title = title || ''; } else { _serverTitle = title || null; } }); var DocumentTitle = React.createClass({ displayName: 'DocumentTitle', propTypes: { title: React.PropTypes.string.isRequired }, statics: { peek: function () { return _serverTitle; }, rewind: function () { var title = _serverTitle; SetDocumentTitle.dispose(); return title; } }, render: function () { return React.createElement(SetDocumentTitle, this.props); } }); module.exports = DocumentTitle;