Skip to content

Commit 1922e6b

Browse files
committed
fix conflict
1 parent 5b9a7de commit 1922e6b

File tree

2 files changed

+35
-25
lines changed

2 files changed

+35
-25
lines changed

src/App.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React from 'react';
22
import axios from 'axios';
3-
import { BehaviorSubject } from 'rxjs/index';
4-
import { combineLatest, timer } from 'rxjs';
3+
import { BehaviorSubject, combineLatest, timer } from 'rxjs';
54
import { flatMap, map, debounce, filter } from 'rxjs/operators';
65

76
import withObservableStream from './withObservableStream';
@@ -12,11 +11,11 @@ const SUBJECT = {
1211
};
1312

1413
const App = ({
14+
query,
1515
subject,
16-
query = '',
17-
stories = [],
18-
onSelectSubject,
16+
stories,
1917
onChangeQuery,
18+
onSelectSubject,
2019
}) => (
2120
<div>
2221
<h1>React with RxJS</h1>
@@ -39,7 +38,10 @@ const App = ({
3938
))}
4039
</div>
4140

42-
<p>{`http://hn.algolia.com/api/v1/${subject}?query=${query}`}</p>
41+
<p>
42+
Fetching from:{' '}
43+
{`http://hn.algolia.com/api/v1/${subject}?query=${query}`}
44+
</p>
4345

4446
<ul>
4547
{stories.map(story => (
@@ -53,35 +55,39 @@ const App = ({
5355
</div>
5456
);
5557

56-
const subject$ = new BehaviorSubject(SUBJECT.POPULARITY);
5758
const query$ = new BehaviorSubject('react');
59+
const subject$ = new BehaviorSubject(SUBJECT.POPULARITY);
5860

59-
const queryToFetch$ = query$.pipe(
61+
const queryForFetch$ = query$.pipe(
6062
debounce(() => timer(1000)),
6163
filter(query => query !== ''),
6264
);
6365

64-
const fetch$ = combineLatest(subject$, queryToFetch$).pipe(
66+
const fetch$ = combineLatest(subject$, queryForFetch$).pipe(
6567
flatMap(([subject, query]) =>
6668
axios(`http://hn.algolia.com/api/v1/${subject}?query=${query}`),
6769
),
6870
map(result => result.data.hits),
6971
);
7072

7173
export default withObservableStream(
72-
// observables
73-
[
74-
combineLatest(subject$, query$, (subject, query) => ({
74+
combineLatest(
75+
subject$,
76+
query$,
77+
fetch$,
78+
(subject, query, stories) => ({
7579
subject,
7680
query,
77-
})),
78-
combineLatest(fetch$, stories => ({
7981
stories,
80-
})),
81-
],
82-
// triggers
82+
}),
83+
),
8384
{
8485
onSelectSubject: subject => subject$.next(subject),
8586
onChangeQuery: value => query$.next(value),
8687
},
88+
{
89+
query: 'react',
90+
subject: SUBJECT.POPULARITY,
91+
stories: [],
92+
},
8793
)(App);

src/withObservableStream.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
import React from 'react';
22

3-
export default (observables, triggers) => Component => {
3+
export default (observable, triggers, initialState) => Component => {
44
return class extends React.Component {
5+
constructor(props) {
6+
super(props);
7+
8+
this.state = {
9+
...initialState,
10+
};
11+
}
12+
513
componentDidMount() {
6-
this.subscriptions = observables.map(observable =>
7-
observable.subscribe(
8-
newState => this.setState({ ...newState }),
9-
),
14+
this.subscription = observable.subscribe(newState =>
15+
this.setState({ ...newState }),
1016
);
1117
}
1218

1319
componentWillUnmount() {
14-
this.subscriptions.forEach(subscription =>
15-
subscription.unsubscribe(),
16-
);
20+
this.subscription.unsubscribe();
1721
}
1822

1923
render() {

0 commit comments

Comments
 (0)