PubSub - is a main Symbiote.js entity to manipulate application data. It implements simple and well known Publication-subscribe pattern and represents all you need to organize data-flow inside your components and outside of them. It is integrated to the Symbiote base class, but also can be used separately:
import { PubSub } from '@symbiotejs/symbiote';
let myDataCtx = PubSub.registerCtx({
myProp: 'some value',
myOtherProp: 'some other value',
});
Use to create and register the PubSub instance.
Syntax:
registerCtx(schema)
registerCtx(schema, id)
// > PubSub instance
| Argument | Type | ? | Description |
|---|---|---|---|
schema | Object<string, *> | required | Property map |
id | String | Symbol | optional | Context ID |
Example:
let myDataCtx = PubSub.registerCtx({
myProp: 'some value',
myOtherProp: 'some other value',
}, 'MY_CTX_ID');
Use to get PubSub object from registry.
Syntax:
getCtx(id)
// > PubSub instance
| Argument | Type | ? | Description |
|---|---|---|---|
id | String | Symbol | required | Context ID |
Example:
let myDataCtx = PubSub.getCtx('MY_CTX_ID');
Use to remove PubSub object from the registry and to clear memory.
Syntax:
deleteCtx(id)
| Argument | Type | ? | Description |
|---|---|---|---|
id | String | Symbol | required | Context ID |
Example:
PubSub.deleteCtx('MY_CTX_ID');
Use to publish new the new property value.
Syntax:
pub(propertyKey, newValue)
| Argument | Type | ? | Description |
|---|---|---|---|
propertyKey | String | required | Property name |
newValue | * | required | Property value |
Example:
myDataCtx.pub('propertyName', 'newValue');
Use to publish multiple changes at once.
Syntax:
multiPub(propertyMap)
| Argument | Type | ? | Description |
|---|---|---|---|
propertyMap | Object<string, *> | required | Key/value update map |
Example:
myDataCtx.multiPub({
propertyName: 'new value',
otherPropertyName: 'other new value',
});
Use to subscribe on property changes.
Syntax:
sub(propertyName, handler)
| Argument | Type | ? | Description |
|---|---|---|---|
propertyName | String | required | Property name |
handler | (newValue) => void | required | Property update handler |
Example:
myDataCtx.sub('propertyName', (newValue) => {
console.log(newValue);
});
Use to read the property value.
Syntax:
read(propertyName)
// > *
| Argument | Type | ? | Description |
|---|---|---|---|
propertyName | String | required | Property name |
Example:
myDataCtx.read('propertyName');
Use to check that property exists.
Syntax:
has(propertyName)
// > true / false
| Argument | Type | ? | Description |
|---|---|---|---|
propertyName | String | required | Property name |
Example:
myDataCtx.has('propertyName');
Use to add a new property into the existing PubSub object.
Syntax:
add(propertyName, initValue)
| Argument | Type | ? | Description |
|---|---|---|---|
propertyName | String | required | Property name |
initValue | * | required | Initial property value |
Example:
myDataCtx.add('propertyName', 'init value');
Use for the manual invocation of the all subscription handlers for the property.
Syntax:
notify(propertyName)
| Argument | Type | ? | Description |
|---|---|---|---|
propertyName | String | required | Property name |
Example:
myDataCtx.notify('propertyName');