8.4.2 • Published 5 years ago

@action-land/component v8.4.2

Weekly downloads
25
License
ISC
Repository
github
Last release
5 years ago

@action-land/component

Action based functional components

Installation

npm i @action-land/component

Usage

import {Nil} from '@action-land/core'
import {COM} from '@action-land/component'

// component is created using the COM constructor function
const component = COM(
  () => ({count: 0}),
  (a, s) => ({...s, count: count + 1}),
  () => Nil(),
  (s: Smitten, m: {count: 0}, p: {color: string}) => 'Hello World' + m.count
)

// component can be transformed using map()
const crazyComponent = component.map(component =>
  COM(
    (...t) => Object.assign({crazy: true}, component.init(...t)),
    component.update,
    component.command,
    component.view
  )
)

API

Component

A component is set of 4 pure functions —

  1. init: Creates the initial state of the component.
  2. update: Is a reducer function.
  3. command: Is a command function.
  4. view: Takes in the state and other params and returns a virtual dom element.
  5. Components are framework agnostic.
export interface Component<State, Params, Args extends any[], VNode> {
  init(...t: Args): State
  update<T>(action: Action<T>, state: State): State
  command<T, R>(action: Action<T>, state: State): Action<R>
  view(e: Hoe, m: State, p: Params): VNode
  map<S, P, A, V>(
    t: Component<State, Params, Args, VNode>
  ): Component<S, P, A, V>
}

init()

  1. Can take in any number of arguments.
  2. Returns the initial version of the State.
function init(...t: any[]): State

update()

  1. Its an update function that takes in an Action and a State and returns a new State.
function update(action: Action, state: State): State

command()

  1. Its an command function that takes in an Action and a State and returns a new Action.
function command(action: Action, state: State): Action

view()

  1. Takes in three arguments — Hoe, State and Params.
  2. Returns a new virtual dom element — VNode.
  3. VNode can be anything implementation from React, snabbdom etc.
function view(e: Hoe, s: State, p: Params): VNode
8.4.2

5 years ago

8.4.1

5 years ago

8.4.0

5 years ago

8.3.0

5 years ago

8.2.0

5 years ago

8.1.1

5 years ago

8.1.0

5 years ago

8.0.0

5 years ago

7.0.1

5 years ago

7.0.0

5 years ago

6.0.0

5 years ago

5.1.0

5 years ago

5.0.0

5 years ago

4.6.2

5 years ago

4.6.1

5 years ago

4.6.0

5 years ago

4.5.1

5 years ago

4.5.0

5 years ago

4.4.2

5 years ago

4.4.1

5 years ago

4.4.0

5 years ago

4.3.0

5 years ago

4.2.0

5 years ago

4.1.0

5 years ago

4.0.1

6 years ago

4.0.0

6 years ago

3.0.0

6 years ago

2.0.1

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago