46 lines
978 B
JavaScript
46 lines
978 B
JavaScript
import React from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import isEqual from 'lodash.isequal'
|
|
import { APP_NAME } from '../../../constants'
|
|
|
|
class PageTitle extends React.PureComponent {
|
|
|
|
componentDidMount() {
|
|
this.updatePageTitle(this.props)
|
|
}
|
|
|
|
componentDidUpdate(prevProps) {
|
|
if (this.props.badge !== prevProps.badge || !isEqual(this.props.path, prevProps.path)) {
|
|
this.updatePageTitle(this.props)
|
|
}
|
|
}
|
|
|
|
updatePageTitle = ({ badge, path}) => {
|
|
let realPath = Array.isArray(path) ? path.join(' / ') : `${path}`
|
|
realPath = realPath.trim()
|
|
|
|
const realBadge = !!badge ? `(${badge})` : ''
|
|
|
|
const title = `${realBadge} ${realPath} / ${APP_NAME}`.trim()
|
|
|
|
document.title = title
|
|
}
|
|
|
|
render() {
|
|
return null
|
|
}
|
|
|
|
}
|
|
|
|
PageTitle.propTypes = {
|
|
badge: PropTypes.oneOfType([
|
|
PropTypes.number,
|
|
PropTypes.string,
|
|
]),
|
|
path: PropTypes.oneOfType([
|
|
PropTypes.string,
|
|
PropTypes.array,
|
|
]),
|
|
}
|
|
|
|
export default PageTitle |