venti
v2.0.0
Published
Global State for React
Readme
Global State for React
Install
npm i ventiQuick Start
Get global state
import React from 'react'
import { useVenti } from 'venti'
export default function Book({ id }) {
const state = useVenti()
const { author, title } = state.get(`books.${id}`, {})
const year = state.get(`books.${id}.year`)
return <div>"{title}" by {author} ({year})</div>
}Set global state
import { state } from 'venti'
state.set('books.1', {
author: 'John Steinbeck',
title: 'Cannery Row',
year: 1945
})API
useVenti( [state] )
state{State} (optional) defaults to singleton state if not provided- Returns
statethat has been instrumented to update the component when applicable - See StateEventer for more info
state.get( path, [defaultValue] )
path{Array|string} The path to getdefaultValue{*} (optional) The value returned for undefined resolved values- Returns the resolved value
state.set( path, value )
path{Array|string} The path of the property to setvalue{*} The value to set
state.unset( path )
path{Array|string} The path of the property to unset
state.update( path, transformFn, [defaultValue] )
path{Array|string} The path of the property to settransformFn{Function} transforms the current value to a new valuedefaultValue{*} (optional) the default value to pass into the transform function if the existing value at the given path is undefinedstate.update('counter', n => n + 1, 0)
Advanced Usage
If you don't want to use Venti's singleton state, you can do this:
import React from 'react'
import { State, useVenti } from 'venti'
const globalState = new State()
const useGlobalState = () => useVenti(globalState)
export default function Book({ id }) {
const state = useGlobalState()
const { title, year } = state.get(`books.${id}`)
return <div>{title} ({year})</div>
}Performance Benchmarks
Color Matrix Benchmark
- Venti: https://will123195.github.io/venti-performance/build/
- Redux: https://will123195.github.io/redux-performance/build/
Examples
Tests
npm testLicense
MIT

