opendash
Version:
open.DASH data visualization framework
21 lines • 922 B
JavaScript
import produce from "immer";
import { useState, useCallback } from "react";
export function useImmerState(initialValue) {
var _a = useState(initialValue), state = _a[0], setState = _a[1];
return [
state,
// the immer way "updateDraft"
useCallback(function (updater) {
setState(function (state) { return produce(state, updater); });
}, []),
// the normal useState + object freeze way "replaceDraft"
useCallback(function (update) {
setState(function (state) { return produce(state, function (draft) { return update; }); });
}, []),
// the object assign way "assignDraft"
useCallback(function (update) {
setState(function (state) { return produce(state, function (draft) { return void Object.assign(draft, update); }); });
}, []),
];
}
//# sourceMappingURL=useImmerState.js.map