react根据路由动态修改页面title

2017-09-30  本文已影响0人  yzr_0802

1、在react的container组件中componentDidMount生命周期中
document.title="这是title名称"

2、或者在路由配置中使用onEnter事件修改
例如:

 <Route path="qa" component={QA} onEnter={()=>{document.title="这是title名称"}}/>

3、使用react-side-effect是一个类似Connect组件的容器,通常它被称为高阶组件。可能就会用到react-document-title插件
例如:

var React = require('react'),
PropTypes = require('prop-types'),
withSideEffect = require('react-side-effect');

4、封装公共组件。在react中,我们可以使用非常少的代码封装出一个公共组件,来修改每个路由的title。

import React from 'react'
import PropTypes from 'prop-types'
export default class ReactDocumentTitle extends React.Component {
setTitle() {
    const { title } = this.props
    document.title = title
}
componentDidMount() {
    this.setTitle()
}
componentDidUpdate() {
    this.setTitle()
}
render() {
    return React.Children.only(this.props.children)
}
}
ReactDocumentTitle.propTypes = {
title: PropTypes.string.isRequired
}

这份代码是将react-side-effect和react-document-title合并。

使用该组件:

import ReactDocumentTitle from 'path/ReactDocumentTitle'
render() {
return (
    <ReactDocumentTitle title="文档标题">
        
    </ReactDocumentTitle>
)
}
上一篇下一篇

猜你喜欢

热点阅读