0.1.1 • Published 10 years ago

neher-flux v0.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

Flux Store

Most basic implementation of flux architecture

Usage

Download the createStore.js from the src directory and import it into your project.

Creating your store

/**
 * TodoStore.js
 */

import createStore from './createStore'

let store = createStore({

	state: [],

	reducer(state = [], action) {
		switch(action.type) {
			case 'ADD_TODO':
				return [
					...state,
					{
						id: action.id,
						text: action.text
					}
				]
			default:
				return state
		}
	}		
	
});

export default store

Using your store

/**
 * SomeComponent.js
 */

import TodoStore from './TodoStore';

// An example local state
let myState = {
	todos: []
}

// Subscribe to any state changes
TodoStore.subscribe(todos => {
	myState.todos = todos
})

// You can also subscribe to specific actions
TodoStore.subscribe('ADD_TODO', todos => {
	myState.todos = todos
})

// Dispatching actions
TodoStore.dispatch({ type: 'ADD_TODO', id: 1, text: 'Hello, Flux!' })

// Unsubscribing from changes
// Right now only works if you pass the same 
// function reference to the subscribe method (not a closure)
TodoStore.unsubscribe(myCallbackFunction())

// Can also unsubscribe from specific actions 
// (only usable if you subscribed to the specific action)
TodoStore.unsubscribe('ADD_TODO', myCallbackFunction())

// If you just want to get the state
myState.todos = TodoStore.getState()