react-document-title
Version:
A declarative, nested, stateful document.title for React
49 lines (38 loc) • 1 kB
JavaScript
;
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;