1.0.3 • Published 12 months ago

@lodado/namespace-core v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

@lodado/namespace-core Summary

@lodado/namespace-core is a lightweight and flexible library designed for state management in React applications. It provides the NamespaceStore class, which serves as a foundational tool for creating custom state stores using JavaScript's Proxy API. By extending NamespaceStore, developers can define application state and actions in a structured and scalable manner.

more information >>

https://github.com/lodado/react-namespace/tree/publish

Key Features

  • Lightweight: Adds minimal overhead to your application.
  • Flexible State Management: Supports both global and local stores for versatile state handling.
  • Proxy API Utilization: Leverages the Proxy API for efficient and reactive state management.
  • TypeScript Support: Fully typed to enhance the developer experience with better tooling and error checking.

Usage

Creating a Namespace Store

To utilize @lodado/namespace-core, you start by creating a store class that extends NamespaceStore. This custom store will hold your application's state and provide methods to modify it.

import { NamespaceStore } from '@lodado/namespace-core';

interface AppState {
  user: {
    name: string;
    email: string;
  };
  theme: 'light' | 'dark';
}

class AppStore extends NamespaceStore<AppState> {
  constructor(initialState: AppState) {
    super(initialState);
  }

  // Actions to modify the state
  setUser(user: AppState['user']) {
    this.state.user = user;
  }

  toggleTheme() {
    this.state.theme = this.state.theme === 'light' ? 'dark' : 'light';
  }
}

// Instantiate the global store
const globalStore = new AppStore({
  user: {
    name: 'John Doe',
    email: 'john.doe@example.com',
  },
  theme: 'light',
});

Defining Actions

Within your extended NamespaceStore, you can define methods that act upon the state. These actions encapsulate the logic for updating state properties.

class CounterStore extends NamespaceStore<{ count: number }> {
  constructor() {
    super({ count: 0 });
  }

  increment() {
    this.state.count += 1;
  }

  decrement() {
    this.state.count -= 1;
  }
}

When to Use

@lodado/namespace-core is particularly beneficial in the following scenarios:

  • Design System Components: Ideal for developing reusable components within a design system.
  • Complex Components: Manages state efficiently in large components like features, widgets, or pages.
  • Recursive Structures: Handles nested components or tabs where mutual manipulation is necessary.
  • External State Manipulation: Allows external components to interact with and manipulate internal state.

Installation

Install the package using npm or yarn:

npm install @lodado/namespace-core
# or
yarn add @lodado/namespace-core

License

MIT License


By focusing on the core functionalities provided by @lodado/namespace-core, developers can create efficient and maintainable state management solutions tailored to their application's needs.

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago

0.0.0

1 year ago