Socket
Book a DemoInstallSign in
Socket

@action-land/component

Package Overview
Dependencies
Maintainers
1
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@action-land/component

Basic interface for a component

latest
Source
npmnpm
Version
8.4.2
Version published
Maintainers
1
Created
Source

@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 —

  • init: Creates the initial state of the component.
  • update: Is a reducer function.
  • command: Is a command function.
  • view: Takes in the state and other params and returns a virtual dom element.
  • 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()

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

update()

  • 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()

function command(action: Action, state: State): Action

view()

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

Keywords

component

FAQs

Package last updated on 14 Nov 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts