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.
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
For authors of pilets
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} />),
);
}
Setup and Bootstrapping
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({
extendApi: [createContainersApi()],
});
There are no options available.
License
Piral is released using the MIT license. For more information see the license file.