A perfect store would:
Centralized & shared data - no need to pass around deep down
Loose coupling - component reusing
Encapsulation - control how data is mutated and gether all data logic in one place
History and Tool Support
Compatible with type checking
Intuitive to use - like plain old JS object
Action state - mark if the action is pending, finished, failed, etc.
Batched updating - use mutation to group changes - all or nothing
Moduling
Easy to test
Plugin
Work well with forms (model)
Centralized & shared data - no need to pass around deep down
centralized
Loose coupling
Component tightly coupled to Vuex
Encapsulation - control how data is mutated and gether all data logic in one place
Yes
History and Tool Support
Yes
Compatible with type checking
No. Difficult to typing and type checking
Intuitive to use - like plain old JS object
No
Action state
No but can be hacked
Batched updating - use mutation to group changes - all or nothing
yes
Moduling
yes, kind of
Easy to test
should be ok
Plugin
yes
Work well with forms (model)
verbose!