Introduction
warning
WIP Documentation!
The vue
package works fine and does not show any problems yet.
However, it has not yet been tested extensively and isn't typesafe (Typescript).
If you find a bug, please file a github issue, and we will fix it as soon as possible.
Integration for Vue
❓ vue
The vue
package helps us to integrate AgileTs into a Vue environment
and serves as an Interface to Vue.
Its main task is to bind States to Vue Components.
This binding ensures that AgileTs rerender the Component whenever a bound State mutates.
It also offers some other valuable functionalities that optimize the workflow using AgileTs in a Vue project.
bindAgileInstances()
The bindAgileInstances()
method binds/subscribes States to Vue Components.
This binding ensures that the Component rerenders whenever a bound State mutates.
We can flexibly bind any State to any Vue Component.
export default {
name: 'MyComponent',
data: function () {
return {
...this.bindAgileInstances({
myState: MY_STATE,
}),
};
},
};
bindAgileInstances()
returns a State value keymap based on the passed States.
We merge the returned keymap into the data
object
to access the State values
in the html
code like we would local Vue States.
<template>
<div id="app">
<p>myState: {{ sharedState.myState }}</p>
</div>
</template>
Note that the AgileTs State values
are under the sharedState
property located
to separate them from the local Vue States.
const MY_STATE = createState('jeff');
const MY_STATE_2 = createState('frank');
this.bindAgileInstances({
myState: MY_STATE,
myState2: MY_STATE_2,
}); // Returns '{myState: 'jeff', mayState2: 'frank'}'
Instead of a States keymap we can also pass an array of States.
But keep in mind that then the passed States require a unique key
to be properly mapped into the returned State value
keymap.
const MY_STATE = createState('jeff', {key: 'myState'});
const MY_STATE_2 = createState('frank');
this.bindAgileInstances([
MY_STATE,
MY_STATE_2,
]); // Returns '{myState: 'jeff'}'
Passed States without a valid key
are ignored
and won't be represented by the returned keymap.
Thus, the State value
isn't accessible in the html
code,
and a State mutation rerender is triggered via. vueComponent.forceRerender()
instead of mutating the data
object.
🟦 Typescript
The Vue Integration isn't typesafe yet. But we are working on it.