Skip to content

Commit 1b1053e

Browse files
authored
Merge pull request #35 from ModusCreateOrg/react-data-2
react-data synced examples and code
2 parents f519852 + e8c1df9 commit 1b1053e

File tree

8 files changed

+91
-167
lines changed

8 files changed

+91
-167
lines changed
Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,4 @@
1-
import React, { Component } from 'react';
2-
import logo from './logo.svg';
3-
import './App.css';
1+
import React from 'react';
42
import List from './List'
53

6-
class App extends Component {
7-
render() {
8-
return (
9-
<div className="App">
10-
<header className="App-header">
11-
<img src={logo} className="App-logo" alt="logo" />
12-
<h1 className="App-title">Welcome to React</h1>
13-
</header>
14-
<p className="App-intro">
15-
To get started, edit <code>src/App.js</code> and save to reload.
16-
</p>
17-
<List />
18-
</div>
19-
);
20-
}
21-
}
22-
23-
export default App;
4+
export default () => <List />;

25-react-data/a-remote-loading/src/List.js

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,48 @@
11
import React, { Component } from 'react';
22

33
class List extends Component {
4-
state = {}
4+
state = {};
55

6-
componentDidMount () {
6+
componentDidMount() {
77
fetch('/data.json')
88
.then(res => res.json())
99
.then(this.onLoad);
1010
}
1111

12-
parseData (data) {
12+
parseData(data) {
1313
return data;
1414
}
1515

16-
onLoad = (data) => {
16+
onLoad = data => {
1717
this.setState({
1818
data: this.parseData(data)
1919
});
20-
}
20+
};
2121

22-
render () {
22+
render() {
2323
const { data } = this.state;
2424

25-
return data ?
26-
this.renderData(data) :
27-
this.renderLoading()
25+
return data ? this.renderData(data) : this.renderLoading();
2826
}
2927

30-
renderData (data) {
28+
renderData(data) {
3129
if (data && data.length > 0) {
3230
return (
3331
<div>
34-
{
35-
data.map(item => (
36-
<div key={item.id}>
37-
<a href={`mailto:${item.email}`}>{item.name}</a> {item.company}
38-
</div>
39-
))
40-
}
32+
{data.map(item => (
33+
<div key={item.id}>
34+
<a href={`mailto:${item.email}`}>{item.name}</a> {item.company}
35+
</div>
36+
))}
4137
</div>
4238
);
4339
} else {
44-
return <div>No items found</div>
40+
return <div>No items found</div>;
4541
}
4642
}
4743

48-
renderLoading () {
49-
return <div>Loading...</div>
44+
renderLoading() {
45+
return <div>Loading...</div>;
5046
}
5147
}
5248

25-react-data/b-sorting/src/App.js

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,4 @@
1-
import React, { Component } from 'react';
2-
import logo from './logo.svg';
3-
import './App.css';
1+
import React from 'react';
42
import List from './List'
53

6-
class App extends Component {
7-
render() {
8-
return (
9-
<div className="App">
10-
<header className="App-header">
11-
<img src={logo} className="App-logo" alt="logo" />
12-
<h1 className="App-title">Welcome to React</h1>
13-
</header>
14-
<p className="App-intro">
15-
To get started, edit <code>src/App.js</code> and save to reload.
16-
</p>
17-
<List />
18-
</div>
19-
);
20-
}
21-
}
22-
23-
export default App;
4+
export default () => <List />;

25-react-data/b-sorting/src/List.js

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,67 @@
11
import React, { Component } from 'react';
2-
3-
import { createSorter } from './util/Sort'
2+
import { createSorter } from './util/Sort';
43

54
class List extends Component {
65
state = {
76
sorters: this.props.sorters
8-
}
7+
};
98

109
static defaultProps = {
11-
sorters: [
12-
{
13-
property: 'name'
14-
},
15-
{
16-
property: 'company'
17-
}
18-
]
19-
}
10+
sorters: [{
11+
property: 'name'
12+
}, {
13+
property: 'company'
14+
}]
15+
};
2016

21-
componentDidMount () {
17+
componentDidMount() {
2218
fetch('/data.json')
2319
.then(res => res.json())
2420
.then(this.onLoad);
2521
}
2622

27-
parseData (data) {
28-
const { sorters } = this.state
23+
parseData(data) {
24+
const { sorters } = this.state;
2925

3026
if (data && data.length) {
3127
if (Array.isArray(sorters) && sorters.length) {
32-
data.sort(createSorter(...sorters))
28+
data.sort(createSorter(...sorters));
3329
}
3430
}
3531

3632
return data;
3733
}
3834

39-
onLoad = (data) => {
35+
onLoad = data => {
4036
this.setState({
4137
data: this.parseData(data)
4238
});
43-
}
39+
};
4440

45-
render () {
41+
render() {
4642
const { data } = this.state;
4743

48-
return data ?
49-
this.renderData(data) :
50-
this.renderLoading()
44+
return data ? this.renderData(data) : this.renderLoading();
5145
}
5246

53-
renderData (data) {
47+
renderData(data) {
5448
if (data && data.length > 0) {
5549
return (
5650
<div>
57-
{
58-
data.map(item => (
59-
<div key={item.id}>
60-
<a href={`mailto:${item.email}`}>{item.name}</a> {item.company}
61-
</div>
62-
))
63-
}
51+
{data.map(item => (
52+
<div key={item.id}>
53+
<a href={`mailto:${item.email}`}>{item.name}</a> {item.company}
54+
</div>
55+
))}
6456
</div>
6557
);
6658
} else {
67-
return <div>No items found</div>
59+
return <div>No items found</div>;
6860
}
6961
}
7062

71-
renderLoading () {
72-
return <div>Loading...</div>
63+
renderLoading() {
64+
return <div>Loading...</div>;
7365
}
7466
}
7567

25-react-data/b-sorting/src/util/Sort.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ const dirMap = {
33
gt: { asc: 1, desc: -1 },
44
// less-than
55
lt: { asc: -1, desc: 1 }
6-
}
6+
};
77

88
const doSort = (A, B, property, direction = 'ASC') => {
9-
const a = A[ property ]
10-
const b = B[ property ]
9+
const a = A[ property ];
10+
const b = B[ property ];
1111

1212
if (a < b) {
13-
return dirMap.lt[ direction.toLowerCase() ]
13+
return dirMap.lt[ direction.toLowerCase() ];
1414
}
1515
if (a > b) {
16-
return dirMap.gt[ direction.toLowerCase() ]
16+
return dirMap.gt[ direction.toLowerCase() ];
1717
}
18-
return 0
18+
return 0;
1919
}
2020

2121
const createSorter = (...args) => {
@@ -25,29 +25,29 @@ const createSorter = (...args) => {
2525
direction: args[1],
2626
property: args[0]
2727
}
28-
]
28+
];
2929
}
3030

3131
return (A, B) => {
32-
let ret = 0
32+
let ret = 0;
3333

3434
args.some(sorter => {
35-
const { property, direction = 'ASC' } = sorter
36-
const value = doSort(A, B, property, direction)
35+
const { property, direction = 'ASC' } = sorter;
36+
const value = doSort(A, B, property, direction);
3737

3838
if (value === 0) {
3939
// they are equal, continue to next sorter if any
40-
return false
40+
return false;
4141
} else {
4242
// they are different, stop at current sorter
43-
ret = value
43+
ret = value;
4444

45-
return true
45+
return true;
4646
}
4747
})
4848

49-
return ret
49+
return ret;
5050
}
5151
}
5252

53-
export { createSorter }
53+
export { createSorter };

25-react-data/c-filtering/src/App.js

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,4 @@
1-
import React, { Component } from 'react';
2-
import logo from './logo.svg';
3-
import './App.css';
1+
import React from 'react';
42
import List from './List'
53

6-
class App extends Component {
7-
render() {
8-
return (
9-
<div className="App">
10-
<header className="App-header">
11-
<img src={logo} className="App-logo" alt="logo" />
12-
<h1 className="App-title">Welcome to React</h1>
13-
</header>
14-
<p className="App-intro">
15-
To get started, edit <code>src/App.js</code> and save to reload.
16-
</p>
17-
<List />
18-
</div>
19-
);
20-
}
21-
}
22-
23-
export default App;
4+
export default () => <List />;

0 commit comments

Comments
 (0)