Skip to content

Instantly share code, notes, and snippets.

View MicroBenz's full-sized avatar

Tananan Tangthanachaikul MicroBenz

View GitHub Profile
// actionCreator.js
import { defineAction } from 'redux-define';
const appsCreator = defineAction('ywc15');
export const promiseStates = ['PENDING', 'RESOLVED', 'REJECTED'];
export default namespace => (action, isContainPromiseStates) => (
isContainPromiseStates ?
appsCreator.defineAction(namespace).defineAction(action, promiseStates) :
appsCreator.defineAction(namespace).defineAction(action).toString()
import { defineAction } from 'redux-define';
const CREATE_TODO = defineAction('CREATE_TODO', ['ERROR', 'SUCCESS'], 'my-app');
// result:
console.log('' + CREATE_TODO); // my-app/CREATE_TODO
console.log('' + CREATE_TODO.ERROR); // my-app/CREATE_TODO_ERROR
console.log('' + CREATE_TODO.SUCCESS); // my-app/CREATE_TODO_SUCCESS;
@MicroBenz
MicroBenz / duck-usage.js
Last active December 4, 2017 16:13
YWC15
// เอาไปสร้าง reducers
import { combineReducers } from 'redux';
import widgets from './ducks/widgets';
import auth from './ducks/auth';
const rootReducer = combineReducers({ auth, widgets });
export default rootReducer;
// เอาไป bind action กับ component
import * as widgetActions from './ducks/widgets';
@MicroBenz
MicroBenz / widget.js
Created December 4, 2017 16:06
YWC15
// Actions
const LOAD = 'my-app/widgets/LOAD';
const CREATE = 'my-app/widgets/CREATE';
const UPDATE = 'my-app/widgets/UPDATE';
const REMOVE = 'my-app/widgets/REMOVE';
// Reducer
export default function reducer(state = {}, action = {}) {
switch (action.type) {
// do reducer stuff
@MicroBenz
MicroBenz / demo-final.js
Last active January 21, 2018 17:13
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose, lifecycle, branch, renderComponent, withProps, withState } from 'recompose';
import { loadCampers } from 'redux/campers/actions';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists
@MicroBenz
MicroBenz / demo-6.js
Last active January 12, 2018 09:35
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose, lifecycle, branch, renderComponent, withProps, withState } from 'recompose';
import { loadCampers } from 'redux/campers/actions';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists
@MicroBenz
MicroBenz / demo-5.js
Created December 3, 2017 16:40
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose, lifecycle, branch, renderComponent, withProps } from 'recompose';
import { loadCampers } from 'redux/campers/actions';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists
@MicroBenz
MicroBenz / demo-4.js
Created December 3, 2017 16:34
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose, lifecycle, branch, renderComponent } from 'recompose';
import { loadCampers } from 'redux/campers/actions';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists,
@MicroBenz
MicroBenz / demo-3.js
Created December 3, 2017 16:29
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose, lifecycle } from 'recompose';
import { loadCampers } from 'redux/campers/actions';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists
@MicroBenz
MicroBenz / demo-2.js
Created December 3, 2017 16:25
Recompose
import React from 'react';
import { conenct } from 'react-redux';
import { compose } from 'recompose';
const enhance = compose(
connect(
state => ({
campers: state.campers.lists
})
)