vue-component-store
v1.0.2
Published
Plugin for keeping the state of your Vue.js application inside components.
Downloads
19
Maintainers
Readme
vue-component-store
A simple plugin for Vue.js 2.5–2.6, offering a clean way to keep the state of your application inside your components.
This library was inspired by https://github.com/LinusBorg/vue-reactive-provide. The basic idea is similar, but the API and implementation are different.
Why?
- Vuex is centralized by design, but suggests dividing the store into modules to mimic the application's structure. This usually requires a lot of boilerplate. It's easier to use the existing component hierarchy and Vue's reactivity system directly instead.
- Vue has a
provide
/inject
mechanism for passing data down the component hierarchy without chains of props, but it's not reactive by default.
Installation
npm install vue-component-store
import VueComponentStore from 'vue-component-store';
Vue.use(VueComponentStore);
API
You can use the following new options in your components:
provideFields
– A list of fields (fromprops
,data
, orcomputed
) to share with the descendant components. The fields will be reactive (one-way binding, like props).injectFields
– A list of fields (provided by ancestor components) to use in the current component. The effect is similar to usingmapState
andmapGetters
from Vuex.provideMethods
– A list of methods to share with the descendant components.injectMethods
– A list of methods (provided by ancestor components) to use in the current component. This is functionally equivalent to bareinject
, but exists for consistency of the API. The effect is similar to usingmapActions
from Vuex.
In order to share global state between all components in your application, use provideFields
/provideMethods
in the root component.
Example
See https://github.com/adamsol/vue-component-store/tree/master/test/components/.