1.0.3-beta.21 โ€ข Published 7 months ago

@vegajs/vortex v1.0.3-beta.21

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

Why Choose Vortex? ๐ŸŒ€โœจ

  • ๐Ÿ”’ Type-safe Excellence: Guarantees full type-safetyโ€”no any types lurking around.
  • โšก Minimized Re-renders: Only essential updates occur, keeping your app snappy.
  • ๐ŸŒ Framework Agnostic: Integrates effortlessly with React, Vue, and more.
  • ๐Ÿ”Œ Plugin Ready: Extend functionality easily with a rich plugin system.
  • ๐Ÿ”ง DevTools Support: Inspect and debug your state seamlessly with Vortex DevTools.
  • ๐Ÿงช Lightweight & Powerful: Just ~2.3kB, with zero dependencies.
  • ๐Ÿคฉ Developer Delight: Intuitive API that grows with your project's needs.


Installation

Install Vortex using your favorite package manager:

npm install @vegajs/vortex
# or
yarn add @vegajs/vortex
# or
pnpm add @vegajs/vortex

Quick Start: Creating a Store

Vortex makes creating a store type-safe, reactive, and straightforward.

import { defineStore } from '@vegajs/vortex';

export const counterStore = defineStore(({ reactive, computed, effect }) => {
  const count = reactive(0);
  const doubleCount = computed(() => count.value * 2);

  effect(() => {
    console.log(`Count is: ${count.value}`);
  });

  const increment = () => count.set(prev => prev + 1);

  return { count, doubleCount, increment };
});

Core API

defineStore(setup, options?)

Create a powerful store with reactive state, computed properties, and effects to keep your logic organized and streamlined.

  • setup: A function that initializes the state using helper functions.
  • options: Optional configurations like plugins, dependency injection, and store naming.

reactive(initialValue)

Define a reactive state that automatically updates as it changes.

computed(fn)

Define a computed property based on reactive dependencies.

effect(fn)

Create side effects that respond to changes in reactive state.

query(fn, options)

Set up asynchronous queries with built-in state tracking (isLoading, isError, etc.).

DIContainer

A simple dependency injection container for managing services and external dependencies.

Real-World Example

A simple counter with reactive state that increments on each click.

import { defineStore, useStore } from '@vegajs/vortex';

const counterStore = defineStore(({ reactive, computed }) => {
    const count = reactive(0);
    const doubleCount = computed(() => count.value * 2);
    const increment = () => count.set(prev => prev + 1);

    return { count, doubleCount, increment };
});

const Counter = () => {
    const { count, doubleCount, increment } = useStore(counterStore);

    return (
        <div>
            <p>count: {count}</p>
            <p>double count: {doubleCount}</p>
            <button onClick={increment}>Increment</button>
        </div>
    );
};

License

MIT

1.0.3-beta.21

7 months ago

1.0.3-beta.20

7 months ago

1.0.3-beta.15

8 months ago

1.0.3-beta.14

8 months ago

1.0.3-beta.17

8 months ago

1.0.3-beta.16

8 months ago

1.0.3-beta.19

8 months ago

1.0.3-beta.18

8 months ago

1.0.3-beta.12

8 months ago

1.0.1

9 months ago

1.0.0

9 months ago

1.0.3

8 months ago

1.0.0-beta.40

9 months ago

1.0.0-beta.41

9 months ago

1.0.0-beta.28

9 months ago

1.0.0-beta.29

9 months ago

1.0.0-beta.26

9 months ago

1.0.0-beta.27

9 months ago

1.0.3-beta.11

8 months ago

1.0.3-beta.10

8 months ago

1.0.3-beta.2

9 months ago

1.0.3-beta.1

9 months ago

1.0.3-beta.4

9 months ago

1.0.3-beta.3

9 months ago

1.0.3-beta.6

9 months ago

1.0.3-beta.5

9 months ago

1.0.3-beta.8

9 months ago

1.0.3-beta.7

9 months ago

1.0.0-beta.33

9 months ago

1.0.3-beta.9

8 months ago

1.0.0-beta.34

9 months ago

1.0.0-beta.31

9 months ago

1.0.0-beta.32

9 months ago

1.0.0-beta.30

9 months ago

1.0.0-beta.39

9 months ago

1.0.0-beta.37

9 months ago

1.0.0-beta.38

9 months ago

1.0.0-beta.35

9 months ago

1.0.0-beta.36

9 months ago

1.0.0-beta.25

9 months ago

1.0.0-beta.24

9 months ago

1.0.0-beta.23

9 months ago

1.0.0-beta.22

9 months ago

1.0.0-beta.21

9 months ago

1.0.0-beta.20

9 months ago

1.0.0-beta.19

9 months ago

1.0.0-beta.18

9 months ago

1.0.0-beta.17

9 months ago

1.0.0-beta.16

9 months ago