Skip to content

Commit 3b48cec

Browse files
committed
Use immutable.Map() as initial state for store
We already use immutable.js classes in state to be protected from accidental state mutation. However, the protect is not complete as the root object is still plain Object() instance. So let's complete protection by using immutable.js Map as root object for state. Besides, having root state as immutable.js Map we make it easier to convert the whole state to plain JS in tests.
1 parent f76dfdb commit 3b48cec

File tree

6 files changed

+11
-5
lines changed

6 files changed

+11
-5
lines changed

package-lock.json

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

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"react-redux": "^5.0.6",
3030
"react-router-dom": "^4.2.2",
3131
"redux": "^3.7.2",
32+
"redux-immutable": "^4.0.0",
3233
"redux-thunk": "^2.2.0"
3334
},
3435
"devDependencies": {

src/components/RecentSnippets.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ class RecentSnippets extends React.Component {
2626
}
2727

2828
export default connect(state => ({
29-
snippets: state.snippets,
30-
recent: state.recent,
29+
snippets: state.get('snippets'),
30+
recent: state.get('recent'),
3131
}))(RecentSnippets);

src/components/Snippet.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,5 @@ class Snippet extends React.Component {
8383
}
8484

8585
export default connect((state, ownProps) => ({
86-
snippet: state.snippets.get(Number(ownProps.match.params.id)),
86+
snippet: state.getIn(['snippets', Number(ownProps.match.params.id)]),
8787
}))(Snippet);

src/components/Syntaxes.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,5 @@ class Syntaxes extends React.Component {
5757
}
5858

5959
export default connect(state => ({
60-
syntaxes: state.syntaxes,
60+
syntaxes: state.get('syntaxes'),
6161
}))(Syntaxes);

src/reducers/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { List, Map, fromJS } from 'immutable';
2-
import { combineReducers } from 'redux';
2+
import { combineReducers } from 'redux-immutable';
33

44
const snippets = (state = Map(), action) => {
55
switch (action.type) {

0 commit comments

Comments
 (0)