zmp-vue
Version:
Build full featured iOS & Android apps using ZMP & Vue
30 lines (24 loc) • 776 B
JavaScript
import { onBeforeUnmount, ref } from 'vue';
import { zmp } from './zmp';
export var useStore = function useStore() {
// (store, getter)
var store = arguments.length <= 0 ? undefined : arguments[0];
var getter = arguments.length <= 1 ? undefined : arguments[1];
if (arguments.length === 1) {
// (getter)
store = zmp.store;
getter = arguments.length <= 0 ? undefined : arguments[0];
}
var obj = store.getters[getter];
var valueRef = ref(obj.value);
var callback = function callback(v) {
valueRef.value = v;
};
obj.onUpdated(callback);
onBeforeUnmount(function () {
// eslint-disable-next-line
store.__removeCallback(callback); // eslint-disable-next-line
store.__removeCallback(obj.__callback);
});
return valueRef;
};