Immersible
Immersible is my own version of Immer. It is more restrictive and has, in my opinion, a more convenient API. You can also subscribe to changes with my library.
Installation
First, we need to install immersible
:
npm install --save immersible
And then we import immersible
where we want to use it.
import { Immersible } from 'immersible'
Usage
Usage is quite simple:
const todo = new Immersible([
{
title: "Learn TypeScript",
done: true
},
{
title: "Try Immer",
done: false
}
]);
todo.produce((draft) => {
draft[1] = true
draft.push({ title: "Tweet about it", done: false })
})
We can access baseState or, if mutated, nextState way simple:
console.log(todo.state)
Differently than with Immer
, we can set setAutoFreeze
and setUseStrictShallowCopy
by object, and not globally:
todo.setAutoFreeze(false)
todo.setAutoFreeze(true)
We can also subscribe/unsubscribe to changes:
const subscriptionId = todo.subscribe((nextState) =>
console.log(nextState)
);
todo.produce((draft) => {
draft[2] = true
})
todo.unsubscribe(subscriptionId)