5.0.3 • Published 3 months ago

x-plus v5.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

x-plus

Easy State Management

x-plus is a library that makes the state management easy for react. it offers a custom hook called useX that takes a class as prop and returns an object whose properties are state , set. state is an instance to class thats passed. and set takes a function (usually a method of the state) that changes the state.

Installation

To install x-plus, run:

npm install x-plus

Playground

https://stackblitz.com/edit/vitejs-vite-yecopw?file=src%2FApp.tsx&terminal=dev

With Devtools enabled : https://stackblitz.com/edit/vitejs-vite-og4cza?file=src%2Findex.css&terminal=dev

Usage

import { useX } from "x-plus";
import { useEffect } from "react";

class Counter {
  count = 0;
  incr() {
    this.count++;
  }
  memos = {
    countPlus2: 0,
  };
  onChange() {
    this.memos.countPlus2 = this.count + 2;
  }
}

function App() {
  const { state, set, stateChanged } = useX(Counter);
  useEffect(() => {
    console.log("state changed");
  }, [stateChanged]);
  return (
    <>
      <div> {state.count}</div> <div>Memo: {state.memos.countPlus2}</div>
      <button onClick={() => set(state.incr)}>Click to increment</button>
    </>
  );
}

export default App;

API

useX

it's a custom hook that connects a class with a component. it returns instance of that class that can be used in a component.

import { useX } from "x-plus";

Usage

Building State:

class Counter {
  count = 0;
  incr() {
    this.count++;
  }
  memos = {
    countPlus2: 0,
  };
  onChange() {
    this.memos.countPlus2 = this.count + 2;
  }
}

in component file. similar to useState except it returns an object.

const { state, set } = useX(Counter);

in html:

<div onClick={() => set(state.incr)}>{state.count} </div>

in the line above, set method takes a function. and calls it which updates the count value. and it renders that portion of the html that's changed.

Contributing

Contributions are always welcome! If you find a bug or want to add a feature, please open an issue or submit a pull request.

Before submitting a pull request, please make sure to:

  • Add tests for any new functionality.
  • Update the README.md file to include any new options or changes to the API.
5.0.3

3 months ago

5.0.2

4 months ago

5.0.1

4 months ago

5.0.0

4 months ago

1.2.0

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.2.4

7 months ago

1.2.3

7 months ago

1.2.2

7 months ago

1.2.1

7 months ago

2.0.2

7 months ago

2.0.1

7 months ago

2.0.0

7 months ago

1.1.9

7 months ago

1.1.8

7 months ago

1.1.7

7 months ago

1.1.6

7 months ago

1.1.5

7 months ago

1.1.4

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

2.1.3

7 months ago

0.7.9

8 months ago

0.1.11

8 months ago

0.5.7

8 months ago

0.7.8

8 months ago

0.7.7

8 months ago

0.0.10

8 months ago

0.0.11

8 months ago

0.0.1

8 months ago

0.2.1

8 months ago

0.0.3

8 months ago

0.2.0

8 months ago

0.0.2

8 months ago

0.8.1

8 months ago

0.0.9

8 months ago

0.8.0

8 months ago

0.0.8

8 months ago

0.5.6

8 months ago

0.8.2

8 months ago

0.5.5

8 months ago

0.2.3

8 months ago

0.0.5

8 months ago

0.2.2

8 months ago

0.0.4

8 months ago

0.2.5

8 months ago

0.0.7

8 months ago

0.2.4

8 months ago

0.0.6

8 months ago

1.0.0

2 years ago