react-simplex v1.4.7
react-simplex
React storage
Install:
npm i --save react-simplexFor web app
import { Simplex, SimplexConnect, SimplexMapToProps } from 'react-simplex';
Simplex.setStorageDriver(
localStorage, // storage driver
false // driver is not async
)
Simplex.init('user',{},true);
await Simplex.init('todos',{},true);For react-native
import { Simplex, SimplexConnect, SimplexMapToProps } from 'react-simplex';
import { AsyncStorage } from 'react-native';
Simplex.setStorageDriver(
AsyncStorage, // storage driver
true // driver is async
)
Simplex.init('user',{},true);
Simplex.init('todos',{},true);SimplexMapToProps
App.js
import { Simplex } from 'react-simplex';
Simplex.init('todos', [], false); //Define some storage scopeTodos.jsx
import { SimplexMapToProps } from 'react-simplex';
class Todos extends Component{
render(){
return(
<div>
<span>{ this.props.todos_count } / { this.props.not_finished_count }</span>
{
this.props.todos.map( ( todo, i)=>{
return <div key={i}>{ todo.title }</div>
})
}
</div>
);
}
});
export default SimplexMapToProps( Todos, ( storage, current_props )=>{
return {
todos: storage.todos,
todos_count: storage.todos.length,
not_finished_count: storage.todos.filter( ( todo )=>{
return !todo.done;
}).length
}
});Put data to storage
Simplex.todos = [
{title: 'tests'},
{title: 'fix'},
{title: 'update readme'},
{title: 'update version'},
{title: 'publish'}
]
Simplex.set('todos', [
{title: 'tests'},
{title: 'fix'},
{title: 'update readme'},
{title: 'update version'},
{title: 'publish'}
])Atention! Change exist storage type array
Simplex.todos = [
{title: 'tests'},
{title: 'fix'},
{title: 'update readme'},
{title: 'update version'},
{title: 'publish'}
]
Simplex.todos.push({
title:
})
//After that changes data not pass to components
//you need to trigger onChange manualy
Simplex.trigger('todos')
or
const todos = Simplex.todos //imutable
todos.push({
title:
})
Simplex.todos = todos;Change storage
//Storage already have some data
Simplex.user = {
name: 'Alex',
token: 'asEkfjeE3rR',
role: 3,
email: 'test@test.ts',
description: 'Some text'
}To update 'user' storage we should do
//Update will auto trigger onChange
Simplex.update('user', {
description: 'New description'
});
or
//Direct access to keys not trigger onChange
Simplex.user.description = 'Some text'
Simplex.trigger('user') //this is important line
or
const user = Simplex.user
user.description = 'New description'
Simplex.user = userSimplex.init(scopeName, data, sync)
Init scope with default values data
sync - true|false sync data with localstorage|asyncStorage
Simplex.set(scopeName, data)
Set value of the defined scope
Simplex.update(scopeName, data)
Update existing scope
Simplex.reset(scopeName)
Reset scope to init value
Simplex.reset()
Reset all scopes to init values
Simplex.onChange(scopeName, callback)
scopeName - can be with namespace 'user.NAMESPACE'
Subscribe to scope changes
Simplex.remove(scopeName)
scopeName with namespace
remove listener
Simplex.trigger(scopeName)
scopeName - default any
Trigger scope changes
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago