Best practices
Effector provides you pretty powerful tooling to migrate all the remaining logic from views to your models(events, effects, stores and their connections in general)
Here are some advices on buildling UI without stress:
Store handlers
Despite your stores having an option to be mapped(store.map
) multiple times, you definitely should avoid handling any events by a mapped store, since this is a big semantic inconsistency.
File Structure
Each model should contain from 2 to 3 files(depends on your preferences).
First of them is index
file which exports only the public interface of your model. Public interface means your events and effects which are used in views directly.
The second one is state
file which exports only model store and mapped stores based on it if they are present.
And the last is an init
file. Init file exports nothing, it only imports events, stores from different models. This is a place where you initialize your effects, to keep other modules pure. Just after that, you start buildling the dataflow of the model (connecting Units aka forward
, sample
, guard
, merge
, split
)