Props Factory
Using propsFactory
is ideal when there are a number of stores that need the same properties. For example, let's say we want to have a version
property for each of our stores:
import { propsFactory } from '@ngneat/elf';
export const {
withVersion,
updateVersion,
selectVersion,
resetVersion,
getVersion,
setVersion,
setVersionInitialValue,
} = propsFactory('version', {
initialValue: 1,
});
The propsFactory
function takes the name
of a property and the initial value and returns everything we need to add, query, and mutate that property. The type
of a property is inferred based on the initialValue
.
import { withVersion, updateVersion, selectVersion, setVersionInitialValue } from '@app/store-props.ts';
setVersionInitialValue(1.1);
const store = createStore({ name: 'todos' }, withVersion());
store.update(updateVersion(2));
store.pipe(selectVersion());
store.query(getVersion);
If you need to use a complex type you can use initialValue: {} as MyInterface
.
Props Array Factory
propsArrayFactory
is similar to propsFactory
but for properties of type array
:
import { propsArrayFactory } from '@ngneat/elf';
export const {
withSkills,
addSkills,
removeSkills,
toggleSkills,
updateSkills,
getSkills,
resetSkills,
selectSkills,
setSkills,
setSkillsInitialValue
inSkills,
} = propsArrayFactory('skills', {
initialValue: [] as string[],
});
propsArrayFactory
is designed to handle primitive
arrays. For managing collections of objects
, it's recommended to use entitiesPropsFactory.
In addition, it's useful for managing a collection of primitives
in one store. Consider the case of a books
store, and a userCollectionIds
that contains book
ids.