UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

30 lines (24 loc) 776 B
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; };