Syntagme is a flux's flamework.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
examples/todo
src
test
.babelrc
.editorconfig
.eslintrc.json
.flowconfig
.gitignore
.mversionrc
.travis.yml
CHANGELOG.md
README.md
bower.json
gulpfile.js
karma.conf.coffee
package.json
syntagme.js
webpack.config.js
yarn.lock

README.md

syntagme.js

Syntagme is a flux's flamework.

npm version Bower version Build Status Codacy Badge Codacy Badge Dependency Status

Installation

bower:

bower install --save syntagme

npm:

npm install --save syntagme

Example

Simplest case

import syntagme from 'syntagme'

const app = syntagme()

app.actionCreator('INCREMENT', () => {
  return { value: 1 }
})

app.reducer(function counterReducer (payload, previous_state={}) {
  switch (payload.action.type) {
    case 'INCREMENT':
      return Object.assign({}, previous_state, { count: payload.action.value + 1 })
  }
})

app.listen()

app.subscribe(function listener (state) {
  console.log('count:', state.count)
})

app.action('INCREMENT')
console.log(app.getState().count) // 2

Promise on ActionCreator

import syntagme from 'syntagme'

const app = syntagme()

app.actionCreator('FETCH', ({ type }) => {
  return new Promise((resolve, reject) => {
    http.get(`/api/message?type=${ type }`)
      .then((response)   => { resolve({data: response.data}) })
      .catch((rejection) => { reject(rejection) })
  })
})

app.reducer(function actionReducer (payload, previous_state={}) {
  switch (payload.action.type) {
    case 'FETCH':
      return Object.assign({}, previous_state, {error: null, loading: true})
    case 'FETCH_RESOLVE':
      return Object.assign({}, previous_state, {error: null, loading: false, payload.action.data})
    case 'FETCH_REJECT':
      return Object.assign({}, previous_state, {error: payload.action.rejection, loading: false, data: null})
  }
})
app.listen()

app.subscribe(function listener (state) {
  console.log('count:', state.count)
})

app.action('FETCH', { type: 'greeting' })

Documentation

app.listen()

Subscribe to state and start executing dispatcher. If dispatch is executed before listen, it gets an error.

app.subscribe(listener: (state) => void)

Subscribe to store updates. listener is executed when state is updated.

app.reducer(reducer: (payload, state) => (state | null))

Register the reducer. Reducers are executed in the order in which they are registered.

If you do not return the new state, subscribe will not be executed.

app.actionCreator(type: ActionType, actionCreator: () => Promise | null)

Register the ActionCreator. Dispatch the evaluation result of the specified function as Action.

When returning Promise, _RESOLVE when resolving, and _REJECT when rejecting are combined with type and dispatched.

app.action(type: ActionType, args)

Dispatch the ActionCreator registered based on type.

An error occurs if you specify an unregistered ActionType.

License

MIT