piral-containers
TypeScript icon, indicating that this package has built-in type declarations

1.5.4 • Public • Published

Piral Logo

This is a plugin that only has a peer dependency to piral-core. What piral-containers brings to the table is a set of Pilet API extensions that can be used with piral or piral-core.

By default, these API extensions are not integrated in piral, so you'd need to add them to your Piral instance.

Why and When

State management is important. While plugins such as piral-redux bring in an additional kind of state container they also allow using this state container in pilets. piral-containers makes the global app state container accessible by all pilets. Using piral-containers every pilet can create its own states within the global store.

Alternatives: Leave every pilet to decide and bundle their own state management. A lightweight, framework-agnostic alternative would be unistore.

Video

We also have a video for this plugin:

@youtube

Documentation

The following functions are brought to the Pilet API.

createState()

Creates a new pilet global state container. The state container will essentially couple to the app shell global state container. It is, however, only available for use inside the pilet.

Usage

::: summary: For pilet authors

You can use the createState function from the Pilet API to create your own sub states in the global state container of the Piral instance.

Example use:

import { PiletApi } from '<name-of-piral-instance>';
import { MyPage } from './MyPage';

export function setup(piral: PiletApi) {
  const connect = piral.createState({
    state: {
      count: 0,
    },
    actions: {
      increment(dispatch) {
        dispatch(state => ({
          count: state.count + 1,
        }));
      },
      decrement(dispatch) {
        dispatch(state => ({
          count: state.count - 1,
        }));
      },
    },
  });
  piral.registerPage(
    '/sample',
    connect(({ state, actions }) => <MyPage count={state.count} {...actions} />),
  );
}

:::

::: summary: For Piral instance developers

The provided library only brings API extensions for pilets to a Piral instance.

For the setup of the library itself you'll need to import createContainersApi from the piral-containers package.

import { createContainersApi } from 'piral-containers';

The integration looks like:

const instance = createInstance({
  // important part
  plugins: [createContainersApi()],
  // ...
});

There are no options available.

:::

License

Piral is released using the MIT license. For more information see the license file.

Package Sidebar

Install

npm i piral-containers

Homepage

piral.io

Weekly Downloads

1,031

Version

1.5.4

License

MIT

Unpacked Size

38 kB

Total Files

41

Last publish

Collaborators

  • florianrappl