Upgrade to react 16

This commit is contained in:
Tom Raithel
2017-11-22 14:26:10 +01:00
parent cc271dccd4
commit 32f64097f0
5 changed files with 47 additions and 51 deletions

View File

@@ -1,17 +1,17 @@
import 'babel-polyfill'; import 'babel-polyfill';
import React from 'react'; import React from 'react';
import { render } from 'react-dom'; import { hydrate } from 'react-dom';
import { createStore, applyMiddleware } from 'redux'; import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux'; import { Provider } from 'react-redux';
import createHistory from 'history/createBrowserHistory'; import createHistory from 'history/createBrowserHistory';
import App from './components/App'; import App from './components/App';
import appReducer from './reducer'; import appReducer from './reducer';
import actions, { NAVIGATE } from './actions'; import actions, { NAVIGATE } from './actions';
import {isMobileViewport} from '../common/config' import { isMobileViewport } from '../common/config';
import {track} from './analytics'; import { track } from './analytics';
// Remove .html and map / to index // Remove .html and map / to index
const getPageNameFromPath = (path) => { const getPageNameFromPath = path => {
if (path === '/') { if (path === '/') {
return 'index'; return 'index';
} }
@@ -20,29 +20,29 @@ const getPageNameFromPath = (path) => {
const historyManager = store => { const historyManager = store => {
const history = createHistory({ const history = createHistory({
basename: '/techradar' basename: '/techradar',
}); });
// If browser-back button is pressed, provide new pageName to store // If browser-back button is pressed, provide new pageName to store
history.listen((location, action) => { history.listen((location, action) => {
if (action === 'POP') { if (action === 'POP') {
const pageName = getPageNameFromPath(location.pathname); const pageName = getPageNameFromPath(location.pathname);
store.dispatch(actions.navigate(pageName, false)) store.dispatch(actions.navigate(pageName, false));
} }
}); });
return next => action => { return next => action => {
if(action.type === NAVIGATE && action.pushToHistory === true) { if (action.type === NAVIGATE && action.pushToHistory === true) {
window.scrollTo(0, 0); window.scrollTo(0, 0);
history.push(`/${action.pageName}.html`); history.push(`/${action.pageName}.html`);
} }
return next(action); return next(action);
} };
}; };
let reloadTimeout; let reloadTimeout;
let wasMobileViewport = isMobileViewport(); let wasMobileViewport = isMobileViewport();
window.addEventListener('resize', function () { window.addEventListener('resize', function() {
clearTimeout(reloadTimeout); clearTimeout(reloadTimeout);
reloadTimeout = setTimeout(() => { reloadTimeout = setTimeout(() => {
if (wasMobileViewport != isMobileViewport()) window.location.reload(); if (wasMobileViewport != isMobileViewport()) window.location.reload();
@@ -56,16 +56,20 @@ const preloadedState = window.__TECHRADAR__;
delete window.__TECHRADAR__; delete window.__TECHRADAR__;
// Create Redux store with initial state // Create Redux store with initial state
const store = createStore(appReducer, preloadedState, applyMiddleware(historyManager)) const store = createStore(
appReducer,
preloadedState,
applyMiddleware(historyManager),
);
const handleSetTitle = (title) => { const handleSetTitle = title => {
document.title = `${title} | AOE Technology Radar`; document.title = `${title} | AOE Technology Radar`;
track(); track();
}; };
render( hydrate(
<Provider store={store}> <Provider store={store}>
<App onSetTitle={handleSetTitle} /> <App onSetTitle={handleSetTitle} />
</Provider>, </Provider>,
document.getElementById('root') document.getElementById('root'),
) );

View File

@@ -14,7 +14,9 @@ function App(props) {
<div className="page__header"> <div className="page__header">
<Header {...props} /> <Header {...props} />
</div> </div>
<div className={classNames('page__content', { 'is-faded': props.isFaded })}> <div
className={classNames('page__content', { 'is-faded': props.isFaded })}
>
<Router {...props} /> <Router {...props} />
</div> </div>
<div className="page__footer"> <div className="page__footer">
@@ -22,10 +24,15 @@ function App(props) {
</div> </div>
</div> </div>
</div> </div>
) );
} }
export default connect( export default connect(
({ items, releases, pageName, pageState }) => ({ items, releases, pageName, pageState }), ({ items, releases, pageName, pageState }) => ({
actions items,
releases,
pageName,
pageState,
}),
actions,
)(App); )(App);

View File

@@ -45,8 +45,8 @@
"postcss-custom-media": "^6.0.0", "postcss-custom-media": "^6.0.0",
"postcss-easy-import": "3.0.0", "postcss-easy-import": "3.0.0",
"postcss-nested": "2.1.2", "postcss-nested": "2.1.2",
"react": "15.4.2", "react": "16.1.1",
"react-dom": "15.4.2", "react-dom": "16.1.1",
"react-redux": "5.0.6", "react-redux": "5.0.6",
"redux": "3.7.2", "redux": "3.7.2",
"walk": "2.3.9", "walk": "2.3.9",

View File

@@ -1,24 +1,19 @@
import { import { createRadar, groupByQuadrants, outputRadar } from '../common/radar';
createRadar,
groupByQuadrants,
outputRadar,
} from '../common/radar';
import { save } from '../common/file'; import { save } from '../common/file';
import { getPageNames } from '../common/config'; import { getPageNames } from '../common/config';
import { renderPage } from '../js/server'; import { renderPage } from '../js/server';
(async () => { (async () => {
try { try {
const radar = await createRadar(); const radar = await createRadar();
getPageNames(radar).map((pageName) => { getPageNames(radar).map(pageName => {
const pageHtml = renderPage(radar, pageName); const pageHtml = renderPage(radar, pageName);
save(pageHtml, `${pageName}.html`); save(pageHtml, `${pageName}.html`);
}); });
console.log('Built radar'); console.log('Built radar');
} catch(e) { } catch (e) {
console.error('error:', e); console.error('error:', e);
} }
})(); })();

View File

@@ -1605,18 +1605,6 @@ faye-websocket@0.11.x:
dependencies: dependencies:
websocket-driver ">=0.5.1" websocket-driver ">=0.5.1"
fbjs@^0.8.1, fbjs@^0.8.4:
version "0.8.12"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
loose-envify "^1.0.0"
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
ua-parser-js "^0.7.9"
fbjs@^0.8.16: fbjs@^0.8.16:
version "0.8.16" version "0.8.16"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
@@ -2922,7 +2910,7 @@ promise@^7.1.1:
dependencies: dependencies:
asap "~2.0.3" asap "~2.0.3"
prop-types@^15.5.10: prop-types@^15.5.10, prop-types@^15.6.0:
version "15.6.0" version "15.6.0"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
dependencies: dependencies:
@@ -2996,13 +2984,14 @@ rc@^1.1.7:
minimist "^1.2.0" minimist "^1.2.0"
strip-json-comments "~2.0.1" strip-json-comments "~2.0.1"
react-dom@15.4.2: react-dom@16.1.1:
version "15.4.2" version "16.1.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.4.2.tgz#015363f05b0a1fd52ae9efdd3a0060d90695208f" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.1.1.tgz#b2e331b6d752faf1a2d31399969399a41d8d45f8"
dependencies: dependencies:
fbjs "^0.8.1" fbjs "^0.8.16"
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.0" object-assign "^4.1.1"
prop-types "^15.6.0"
react-redux@5.0.6: react-redux@5.0.6:
version "5.0.6" version "5.0.6"
@@ -3015,13 +3004,14 @@ react-redux@5.0.6:
loose-envify "^1.1.0" loose-envify "^1.1.0"
prop-types "^15.5.10" prop-types "^15.5.10"
react@15.4.2: react@16.1.1:
version "15.4.2" version "16.1.1"
resolved "https://registry.yarnpkg.com/react/-/react-15.4.2.tgz#41f7991b26185392ba9bae96c8889e7e018397ef" resolved "https://registry.yarnpkg.com/react/-/react-16.1.1.tgz#d5c4ef795507e3012282dd51261ff9c0e824fe1f"
dependencies: dependencies:
fbjs "^0.8.4" fbjs "^0.8.16"
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.0" object-assign "^4.1.1"
prop-types "^15.6.0"
read-cache@^1.0.0: read-cache@^1.0.0:
version "1.0.0" version "1.0.0"