Initial commit from boilerplate

This commit is contained in:
2017-02-01 22:09:06 -07:00
commit ff17b2a0d3
45 changed files with 2219 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT';

View File

@@ -0,0 +1,13 @@
import * as types from './actionTypes';
export function increment() {
return {
type: types.INCREMENT
};
}
export function decrement() {
return {
type: types.DECREMENT
};
}

36
app/components/counter.js Normal file
View File

@@ -0,0 +1,36 @@
import React, {Component} from 'react';
import {StyleSheet, View, Text, TouchableOpacity} from 'react-native';
const styles = StyleSheet.create({
button: {
width: 100,
height: 30,
padding: 10,
backgroundColor: 'lightgray',
alignItems: 'center',
justifyContent: 'center',
margin: 3
}
});
export default class Counter extends Component {
constructor(props) {
super(props);
}
render() {
const { counter, increment, decrement } = this.props;
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>{counter}</Text>
<TouchableOpacity onPress={increment} style={styles.button}>
<Text>up</Text>
</TouchableOpacity>
<TouchableOpacity onPress={decrement} style={styles.button}>
<Text>down</Text>
</TouchableOpacity>
</View>
);
}
}

21
app/containers/app.js Normal file
View File

@@ -0,0 +1,21 @@
import React, {Component} from 'react';
import { createStore, applyMiddleware, combineReducers } from 'redux';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
import * as reducers from '../reducers';
import CounterApp from './counterApp';
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);
export default class App extends Component {
render() {
return (
<Provider store={store}>
<CounterApp />
</Provider>
);
}
}

View File

@@ -0,0 +1,33 @@
'use strict';
import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import Counter from '../components/counter';
import * as counterActions from '../actions/counterActions';
import { connect } from 'react-redux';
// @connect(state => ({
// state: state.counter
// }))
class CounterApp extends Component {
constructor(props) {
super(props);
}
render() {
const { state, actions } = this.props;
return (
<Counter
counter={state.count}
{...actions} />
);
}
}
export default connect(state => ({
state: state.counter
}),
(dispatch) => ({
actions: bindActionCreators(counterActions, dispatch)
})
)(CounterApp);

22
app/reducers/counter.js Normal file
View File

@@ -0,0 +1,22 @@
import * as types from '../actions/actionTypes';
const initialState = {
count: 0
};
export default function counter(state = initialState, action = {}) {
switch (action.type) {
case types.INCREMENT:
return {
...state,
count: state.count + 1
};
case types.DECREMENT:
return {
...state,
count: state.count - 1
};
default:
return state;
}
}

5
app/reducers/index.js Normal file
View File

@@ -0,0 +1,5 @@
import counter from './counter';
export {
counter
};