| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import Vue from 'vue';
- const companyUserIsLogin = () => {
- try {
- const companyUser = uni.getStorageSync('companyUser');
- return !!companyUser && companyUser !== '';
- } catch (e) {
- return false;
- }
- };
- // 针对 nvue (Weex) 环境下 Vuex 4 兼容性修复
- // Vuex 4 依赖 Vue 3 的 effectScope, reactive, computed 等 API
- // 而 nvue (基于 Weex/Vue 2) 缺失这些 API
- try {
- // Polyfill global helpers
- if (Vue) {
- if (!Vue.prototype.$companyUserIsLogin) {
- Vue.prototype.$companyUserIsLogin = companyUserIsLogin;
- }
- if (!Vue.prototype.$isIos) {
- Vue.prototype.$isIos = function() {
- return uni.getSystemInfoSync().platform === 'ios';
- };
- }
- }
- // 1. effectScope
- if (Vue && !Vue.effectScope) {
- // console.log('Polyfilling effectScope for nvue...', new Date().getTime());
- Vue.effectScope = function() {
- return {
- run: function(fn) { return fn ? fn() : undefined; },
- stop: function() {}
- };
- };
- }
-
- // 2. computed
- // Vuex 4 使用 computed(() => ...) 创建 getter,返回一个 ref 对象
- // 之前的 polyfill 直接执行 getter() 导致在 store 初始化完成前访问 state 报错
- // 修复:返回一个包含 lazy value getter 的对象
- if (Vue && !Vue.computed) {
- Vue.computed = function(getter) {
- return {
- get value() {
- return getter();
- }
- };
- };
- }
- // 3. reactive
- // Vuex 4 使用 reactive(state)
- // Vue 2 可以使用 Vue.observable 替代
- if (Vue && !Vue.reactive) {
- Vue.reactive = function(obj) {
- // Vue 2 observable 如果传入响应式对象会返回它本身
- return Vue.observable(obj);
- };
- }
-
- // 4. ref (Vuex 4 可能用到)
- // 简单模拟 ref,Vue 2 没有真正的 ref,这里返回一个响应式对象 wrapper
- if (Vue && !Vue.ref) {
- Vue.ref = function(val) {
- const wrapper = { value: val };
- return Vue.observable(wrapper);
- };
- }
-
- } catch (e) {
- console.error('Polyfill failed:', e);
- }
- export default {};
|