EffectOn
Note: this is an experimental API. We are pre-releasing it to allow for early feedback. The API is subject to breaking changes with any release of Easy Peasy. As such we have prefixed the API with "unstable_", much like React does with its experimental APIs. Once the API has stabilised the "unstable_" prefix will be removed and semver based releases will be respected.
API
type Unstable_EffectOn<
Model extends object = {},
StoreModel extends object = {},
Injections = any
>
Model
The model against which the unstable_effectOn property is being defined. You need to provide this so that the state that will be provided to your unstable_effectOn is correctly typed.
StoreModel
If you expect to target state from the entire store then you will need to provide your store's model interface so that the store state is correctly typed.
Injections
If your store was configured with injections, and you intend to use them within your unstable_effectOn, then you should provide the type of the injections here.
Example
import { Unstable_EffectOn, unstable_effectOn } from 'easy-peasy';
interface TodosModel {
todos: string[];
onTodosChanged: Unstable_EffectOn<TodosModel>;
}
const todosModel: TodosModel = {
todos: [],
onTodosChanged: unstable_effectOn(
[state => state.todos],
async (actions, change) => {
const [todos] = change.current;
await todosService.save(todos);
}
)
}