Skip to content

Commit 197c63c

Browse files
committed
convert to mobx
1 parent 518a80e commit 197c63c

22 files changed

+61
-313
lines changed

package-lock.json

Lines changed: 13 additions & 53 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
"version": "0.1.0",
44
"private": true,
55
"dependencies": {
6+
"mobx": "^3.2.2",
7+
"mobx-react": "^4.2.2",
68
"react": "^15.6.1",
79
"react-dom": "^15.6.1",
8-
"react-redux": "^5.0.5",
9-
"react-scripts": "1.0.10",
10-
"redux": "^3.7.2",
11-
"redux-logger": "^3.0.6",
12-
"redux-saga": "^0.15.6"
10+
"react-scripts": "1.0.10"
1311
},
1412
"scripts": {
1513
"start": "react-scripts start",

src/actions/archive.js

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/actions/story.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/actions/story.test.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/components/SearchStories.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import React, { Component } from 'react';
2-
import { connect } from 'react-redux';
3-
import { doFetchStories } from '../actions/story';
2+
import { inject, observer } from 'mobx-react';
43
import Button from './Button';
4+
import { fetchStories } from '../api/story';
55

66
const applyQueryState = query => () => ({
77
query
88
});
99

10+
@inject('storyStore') @observer
1011
class SearchStories extends Component {
1112
constructor(props) {
1213
super(props);
@@ -22,7 +23,8 @@ class SearchStories extends Component {
2223
onSubmit(event) {
2324
const { query } = this.state;
2425
if (query) {
25-
this.props.onFetchStories(query)
26+
fetchStories(query)
27+
.then(result => this.props.storyStore.setStories(result.hits));
2628

2729
this.setState(applyQueryState(''));
2830
}
@@ -51,11 +53,4 @@ class SearchStories extends Component {
5153
}
5254
}
5355

54-
const mapDispatchToProps = (dispatch) => ({
55-
onFetchStories: query => dispatch(doFetchStories(query)),
56-
});
57-
58-
export default connect(
59-
null,
60-
mapDispatchToProps
61-
)(SearchStories);
56+
export default SearchStories;

src/components/Stories.js

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
11
import React from 'react';
2-
import { connect } from 'react-redux';
3-
import {
4-
getReadableStories,
5-
getFetchError,
6-
} from '../selectors/story';
72
import './Stories.css';
83

94
import Story from './Story';
@@ -57,11 +52,4 @@ const StoriesHeader = ({ columns }) =>
5752
)}
5853
</div>
5954

60-
const mapStateToProps = state => ({
61-
stories: getReadableStories(state),
62-
error: getFetchError(state),
63-
});
64-
65-
export default connect(
66-
mapStateToProps
67-
)(Stories);
55+
export default inject('storyStore')(observer(Stories));

src/components/Story.js

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import React from 'react';
2-
import { connect } from 'react-redux';
3-
import { doArchiveStory } from '../actions/archive';
2+
import { inject, observer } from 'mobx-react';
43
import { ButtonInline } from './Button';
54
import './Story.css';
65

7-
const Story = ({ story, columns, onArchive }) => {
6+
const Story = ({ story, columns, archiveStore }) => {
87
const {
98
title,
109
url,
@@ -29,19 +28,12 @@ const Story = ({ story, columns, onArchive }) => {
2928
{points}
3029
</span>
3130
<span style={{ width: columns.archive.width }}>
32-
<ButtonInline onClick={() => onArchive(objectID)}>
31+
<ButtonInline onClick={() => archiveStore.archiveStory(objectID)}>
3332
Archive
3433
</ButtonInline>
3534
</span>
3635
</div>
3736
);
3837
}
3938

40-
const mapDispatchToProps = dispatch => ({
41-
onArchive: id => dispatch(doArchiveStory(id)),
42-
});
43-
44-
export default connect(
45-
null,
46-
mapDispatchToProps
47-
)(Story);
39+
export default inject('archiveStore')(observer(Story));

src/constants/actionTypes.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import React from 'react';
22
import ReactDOM from 'react-dom';
3-
import { Provider } from 'react-redux';
3+
import { Provider } from 'mobx-react';
44
import App from './components/App';
5-
import store from './store';
5+
import * as stores from './store';
66
import './index.css';
77
import registerServiceWorker from './registerServiceWorker';
88

99
ReactDOM.render(
10-
<Provider store={store}>
10+
<Provider { ...stores }>
1111
<App />
1212
</Provider>,
1313
document.getElementById('root')

0 commit comments

Comments
 (0)