Skip to content

Commit 467fe9f

Browse files
committed
exercise setup
1 parent a8da8df commit 467fe9f

File tree

9 files changed

+130
-19
lines changed

9 files changed

+130
-19
lines changed

exercise/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"dependencies": {
88
"react": "16.2.0",
99
"react-dom": "16.2.0",
10+
"react-router-dom": "^4.2.2",
1011
"react-scripts": "1.1.0"
1112
},
1213
"devDependencies": {},

exercise/src/App.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React, { Component } from 'react';
2+
import {BrowserRouter as Router, Route, Link} from 'react-router-dom'
3+
import PerformanceOptimizations from './performance-optimizations'
4+
5+
class App extends Component {
6+
render() {
7+
return (
8+
<Router>
9+
<div className="container">
10+
<div className="sidebar">
11+
<ul>
12+
<li><Link to='/'>Refs</Link></li>
13+
<li><Link to='/performance-optimizations'>perfromance optimizations</Link></li>
14+
</ul>
15+
</div>
16+
<div className="content">
17+
<Route exact path='/' component={PerformanceOptimizations} />
18+
<Route path='/performance-optimizations' component={PerformanceOptimizations} />
19+
</div>
20+
</div>
21+
</Router>
22+
);
23+
}
24+
}
25+
26+
export default App;

exercise/src/index.css

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
body {
2+
margin: 0;
3+
padding: 0;
4+
font-family: sans-serif;
5+
}
6+
7+
.container {
8+
padding-top: 50px;
9+
display: flex;
10+
flex: 1;
11+
}
12+
13+
.sidebar {
14+
flex: 1;
15+
16+
}
17+
.sidebar ul {
18+
list-style: none;
19+
}
20+
.sidebar li {
21+
padding: 5px;
22+
}
23+
24+
.content {
25+
display: flex;
26+
flex: 3;
27+
}

exercise/src/index.js

100755100644
Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
1-
import React from "react";
2-
import { render } from "react-dom";
3-
import Counter from "./Counter";
1+
import React from 'react';
2+
import ReactDOM from 'react-dom';
3+
import './index.css';
4+
import App from './App';
45

5-
const styles = {
6-
fontFamily: "sans-serif",
7-
textAlign: "center"
8-
};
9-
10-
const App = () => (
11-
<div style={styles}>
12-
<Counter />
13-
</div>
14-
);
15-
16-
render(<App />, document.getElementById("root"));
6+
ReactDOM.render(<App />, document.getElementById('root'));
File renamed without changes.
File renamed without changes.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from "react";
2+
import Counter from "./Counter";
3+
4+
const styles = {
5+
fontFamily: "sans-serif",
6+
textAlign: "center"
7+
};
8+
9+
const App = () => (
10+
<div style={styles}>
11+
<p>Implement shouldComponentUpdate in Counter to avoid unnecessary re-renders.</p>
12+
<Counter />
13+
</div>
14+
);
15+
16+
export default App

exercise/yarn.lock

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3179,6 +3179,16 @@ he@1.1.x:
31793179
version "1.1.1"
31803180
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
31813181

3182+
history@^4.7.2:
3183+
version "4.7.2"
3184+
resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b"
3185+
dependencies:
3186+
invariant "^2.2.1"
3187+
loose-envify "^1.2.0"
3188+
resolve-pathname "^2.2.0"
3189+
value-equal "^0.4.0"
3190+
warning "^3.0.0"
3191+
31823192
hmac-drbg@^1.0.0:
31833193
version "1.0.1"
31843194
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -3195,6 +3205,10 @@ hoek@4.x.x:
31953205
version "4.2.1"
31963206
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
31973207

3208+
hoist-non-react-statics@^2.3.0:
3209+
version "2.5.0"
3210+
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40"
3211+
31983212
home-or-tmp@^2.0.0:
31993213
version "2.0.0"
32003214
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
@@ -3429,7 +3443,7 @@ interpret@^1.0.0:
34293443
version "1.1.0"
34303444
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
34313445

3432-
invariant@^2.2.2:
3446+
invariant@^2.2.1, invariant@^2.2.2:
34333447
version "2.2.4"
34343448
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
34353449
dependencies:
@@ -4319,7 +4333,7 @@ longest@^1.0.1:
43194333
version "1.0.1"
43204334
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
43214335

4322-
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
4336+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1:
43234337
version "1.3.1"
43244338
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
43254339
dependencies:
@@ -5006,7 +5020,7 @@ path-to-regexp@0.1.7:
50065020
version "0.1.7"
50075021
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
50085022

5009-
path-to-regexp@^1.0.1:
5023+
path-to-regexp@^1.0.1, path-to-regexp@^1.7.0:
50105024
version "1.7.0"
50115025
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
50125026
dependencies:
@@ -5432,7 +5446,7 @@ promise@^7.1.1:
54325446
dependencies:
54335447
asap "~2.0.3"
54345448

5435-
prop-types@^15.5.10, prop-types@^15.6.0:
5449+
prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.6.0:
54365450
version "15.6.1"
54375451
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca"
54385452
dependencies:
@@ -5596,6 +5610,29 @@ react-error-overlay@^4.0.0:
55965610
version "4.0.0"
55975611
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4"
55985612

5613+
react-router-dom@^4.2.2:
5614+
version "4.2.2"
5615+
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d"
5616+
dependencies:
5617+
history "^4.7.2"
5618+
invariant "^2.2.2"
5619+
loose-envify "^1.3.1"
5620+
prop-types "^15.5.4"
5621+
react-router "^4.2.0"
5622+
warning "^3.0.0"
5623+
5624+
react-router@^4.2.0:
5625+
version "4.2.0"
5626+
resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986"
5627+
dependencies:
5628+
history "^4.7.2"
5629+
hoist-non-react-statics "^2.3.0"
5630+
invariant "^2.2.2"
5631+
loose-envify "^1.3.1"
5632+
path-to-regexp "^1.7.0"
5633+
prop-types "^15.5.4"
5634+
warning "^3.0.0"
5635+
55995636
react-scripts@1.1.0:
56005637
version "1.1.0"
56015638
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.1.0.tgz#0c94b2b2e14cff2dad8919397901b5edebeba511"
@@ -5934,6 +5971,10 @@ resolve-from@^3.0.0:
59345971
version "3.0.0"
59355972
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
59365973

5974+
resolve-pathname@^2.2.0:
5975+
version "2.2.0"
5976+
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879"
5977+
59375978
resolve-url@^0.2.1:
59385979
version "0.2.1"
59395980
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -6903,6 +6944,10 @@ validate-npm-package-license@^3.0.1:
69036944
spdx-correct "^3.0.0"
69046945
spdx-expression-parse "^3.0.0"
69056946

6947+
value-equal@^0.4.0:
6948+
version "0.4.0"
6949+
resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7"
6950+
69066951
vary@~1.1.2:
69076952
version "1.1.2"
69086953
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -6931,6 +6976,12 @@ walker@~1.0.5:
69316976
dependencies:
69326977
makeerror "1.0.x"
69336978

6979+
warning@^3.0.0:
6980+
version "3.0.0"
6981+
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
6982+
dependencies:
6983+
loose-envify "^1.0.0"
6984+
69346985
watch@~0.10.0:
69356986
version "0.10.0"
69366987
resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"

0 commit comments

Comments
 (0)