diff --git a/client/index.js b/client/index.js index 5eef4fe032a..e85045329f4 100644 --- a/client/index.js +++ b/client/index.js @@ -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), diff --git a/common/app/App.jsx b/common/app/App.jsx index 25ad3ad91e2..1307166924c 100644 --- a/common/app/App.jsx +++ b/common/app/App.jsx @@ -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 }; diff --git a/server/boot/a-react.js b/server/boot/a-react.js index 91e4e8dbe7e..5f094fe973b 100644 --- a/server/boot/a-react.js +++ b/server/boot/a-react.js @@ -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)