Make document titles work

pull/5871/head
Berkeley Martinez 2016-01-03 19:40:49 -08:00
parent 30826d9ecb
commit ea574d721e
3 changed files with 15 additions and 16 deletions

View File

@ -47,6 +47,12 @@ app$({ history, location: appLocation })
location => location && location.key ? location.key : location
);
// set page title
appStore$
.pluck('title')
.doOnNext(title => document.title = title)
.subscribe(() => {});
synchroniseHistory(
history,
updateLocation,
@ -55,8 +61,11 @@ app$({ history, location: appLocation })
routerState$
);
})
// allow store subscribe to subscribe to actions
.delay(10)
.flatMap(({ props, appCat }) => {
props.history = history;
return render$(
appCat,
React.createElement(Router, props),

View File

@ -25,22 +25,6 @@ export default contain(
username: PropTypes.string
},
componentDidMount() {
const title = this.props.title;
this.setTitle(title);
},
componentWillReceiveProps(nextProps) {
if (nextProps.title !== this.props.title) {
this.setTitle(nextProps.title);
}
},
setTitle(title) {
const doc = typeof document !== 'undefined' ? document : {};
doc.title = title;
},
render() {
const { username, points, picture } = this.props;
const navProps = { username, points, picture };

View File

@ -54,6 +54,12 @@ export default function reactSubRouter(app) {
.flatMap(function({ props, AppCat }) {
const cat = AppCat(null, services);
debug('render react markup and pre-fetch data');
const store = cat.getStore('appStore');
// primes store to observe action changes
// cleaned up by cat.dispose further down
store.subscribe(() => {});
return renderToString$(
cat,
React.createElement(RoutingContext, props)