Guest User

Untitled

a guest
Dec 10th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. import produce from "immer";
  2.  
  3. export interface ImmerStateFunc<S> {
  4. (f: ((s: S) => void)): Promise<any>;
  5. }
  6.  
  7. export interface MergeStateFunc<S> {
  8. (partialState: Partial<S>): Promise<any>;
  9. }
  10.  
  11. export let immerHelpers = {
  12. setState: (...f: any[]) => void {},
  13.  
  14. async immerState<S>(f: ((s: S) => void)): Promise<any> {
  15. return new Promise((resolve) => {
  16. this.setState(produce<any>(f), () => {
  17. resolve();
  18. });
  19. });
  20. },
  21.  
  22. async mergeState<S>(partialState: Partial<S>): Promise<any> {
  23. let newState = produce<S>((state) => {
  24. Object.assign(state, partialState);
  25. });
  26. return new Promise((resolve) => {
  27. this.setState(newState, () => {
  28. resolve();
  29. });
  30. });
  31. },
  32. };
Add Comment
Please, Sign In to add comment