提交 5d683283 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

fix(mp): 部分小程序平台 eventChannel 通信失败问题 #3945

上级 d080007a
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new my.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return my.getSystemInfoSync()
}
......@@ -915,71 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, my[key]));
},
};
// 处理 api mp 打包后为不同js,emitter 无法共享问题
{
my.$emit = $emit;
}
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = my) {
......@@ -1110,6 +1009,109 @@ function getHostName(fromRes) {
const redirectTo = {};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new my.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, my[key]));
},
};
// 处理 api mp 打包后为不同js,emitter 无法共享问题
{
my.$emit = $emit;
}
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
my.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
let onKeyboardHeightChangeCallback;
const getProvider = initGetProvider({
oauth: ['alipay'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, capitalize, isFunction, extend, isPlainObject, isStrin
import { ref, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, EMPTY_OBJ, isRef, setTemplateRef, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -108,8 +97,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = my.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new swan.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return swan.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, swan[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = swan) {
......@@ -1143,6 +1046,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new swan.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, swan[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
swan.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const getProvider = initGetProvider({
oauth: ['baidu'],
share: ['baidu'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, hyphenate, isPlainObject } from '@
import { ref, nextTick, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -103,8 +92,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = swan.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
......@@ -23,7 +23,7 @@ import { invokeCreateVueAppHook, onCreateVueApp } from '@dcloudio/uni-shared'
import { promisify } from './promise'
import { initWrapper } from './wrapper'
import { MPProtocols } from './protocols'
import { MPProtocols, getEventChannel } from './protocols'
import { getLocale, setLocale, onLocaleChange } from './locale'
const baseApis = {
......@@ -68,6 +68,10 @@ export function initUni(api: Record<string, any>, protocols: MPProtocols) {
if (__PLATFORM__ === 'mp-alipay') {
__GLOBAL__.$emit = $emit
}
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
if (__PLATFORM__ !== 'mp-weixin') {
__GLOBAL__.getEventChannel = getEventChannel
}
return new Proxy({}, UniProxyHandlers)
}
......@@ -145,9 +145,14 @@ function callHook(this: ComponentPublicInstance, name: string, args?: unknown) {
callHook.call(this, 'bm') // beforeMount
this.$.isMounted = true
name = 'm'
} else if (name === 'onLoad' && args && (args as any).__id__) {
;(this as any).__eventChannel__ = getEventChannel((args as any).__id__)
delete (args as any).__id__
}
if (__PLATFORM__ !== 'mp-weixin') {
if (name === 'onLoad' && args && (args as any).__id__) {
;(this as any).__eventChannel__ = __GLOBAL__.getEventChannel(
(args as any).__id__
)
delete (args as any).__id__
}
}
const hooks = (this.$ as any)[name]
return hooks && invokeArrayFns(hooks, args)
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new ks.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return ks.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, ks[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = ks) {
......@@ -1149,6 +1052,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new ks.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, ks[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
ks.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const getProvider = initGetProvider({
oauth: ['kuaishou'],
share: ['kuaishou'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, hyphenate, isPlainObject } from '@
import { ref, nextTick, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -103,8 +92,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = ks.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new tt.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return tt.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, tt[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = tt) {
......@@ -1149,6 +1052,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new tt.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, tt[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
tt.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const getProvider = initGetProvider({
oauth: ['toutiao'],
share: ['toutiao'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, isPlainObject, isObject } from '@v
import { ref, nextTick, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -99,8 +88,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = tt.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new qq.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return qq.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, qq[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = qq) {
......@@ -1147,6 +1050,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new qq.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, qq[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
qq.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const getProvider = initGetProvider({
oauth: ['qq'],
share: ['qq'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, isPlainObject } from '@vue/shared'
import { ref, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -99,8 +88,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = qq.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new tt.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return tt.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, tt[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = tt) {
......@@ -1149,6 +1052,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new tt.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, tt[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
tt.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const getProvider = initGetProvider({
oauth: ['toutiao'],
share: ['toutiao'],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, isPlainObject, isObject } from '@v
import { ref, nextTick, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -99,8 +88,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = tt.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawType, makeMap, isFunction, isPromise, extend, remove } from '@vue/shared';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook, sortObject } from '@dcloudio/uni-shared';
import { LINEFEED, Emitter, sortObject, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
function getBaseSystemInfo() {
return wx.getSystemInfoSync()
......@@ -879,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, wx[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = wx) {
......@@ -1181,6 +1120,67 @@ const getAppAuthorizeSetting = {
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, wx[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];
const getProvider = initGetProvider({
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, isPlainObject } from '@vue/shared'
import { ref, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -98,10 +87,6 @@ function callHook(name, args) {
this.$.isMounted = true;
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
}
......
......@@ -2,42 +2,6 @@ import { isArray, hasOwn, isString, isPlainObject, isObject, capitalize, toRawTy
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
import { LINEFEED, Emitter, onCreateVueApp, invokeCreateVueAppHook } from '@dcloudio/uni-shared';
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new qa.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
function getBaseSystemInfo() {
return qa.getSystemInfoSync()
}
......@@ -915,67 +879,6 @@ if (typeof global !== 'undefined') {
global.getLocale = getLocale;
}
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, qa[key]));
},
};
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const UUID_KEY = '__DC_STAT_UUID';
let deviceId;
function useDeviceId(global = qa) {
......@@ -1146,6 +1049,105 @@ const previewImage = {
},
};
const eventChannels = {};
const eventChannelStack = [];
let id = 0;
function initEventChannel(events, cache = true) {
id++;
const eventChannel = new qa.EventChannel(id, events);
if (cache) {
eventChannels[id] = eventChannel;
eventChannelStack.push(eventChannel);
}
return eventChannel;
}
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const navigateTo = {
args(fromArgs) {
const id = initEventChannel(fromArgs.events).id;
if (fromArgs.url) {
fromArgs.url =
fromArgs.url +
(fromArgs.url.indexOf('?') === -1 ? '?' : '&') +
'__id__=' +
id;
}
},
returnValue(fromRes) {
fromRes.eventChannel = getEventChannel();
},
};
const baseApis = {
$on,
$off,
$once,
$emit,
upx2px,
interceptors,
addInterceptor,
removeInterceptor,
onCreateVueApp,
invokeCreateVueAppHook,
getLocale,
setLocale,
onLocaleChange,
getPushClientId,
onPushMessage,
offPushMessage,
invokePushCallback,
};
function initUni(api, protocols) {
const wrapper = initWrapper(protocols);
const UniProxyHandlers = {
get(target, key) {
if (hasOwn(target, key)) {
return target[key];
}
if (hasOwn(api, key)) {
return promisify(key, api[key]);
}
if (hasOwn(baseApis, key)) {
return promisify(key, baseApis[key]);
}
// event-api
// provider-api?
return promisify(key, wrapper(key, qa[key]));
},
};
// 处理 api mp 打包后为不同js,getEventChannel 无法共享问题
qa.getEventChannel = getEventChannel;
return new Proxy({}, UniProxyHandlers);
}
function initGetProvider(providers) {
return function getProvider({ service, success, fail, complete, }) {
let res;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service,
provider: providers[service],
};
isFunction(success) && success(res);
}
else {
res = {
errMsg: 'getProvider:fail:服务[' + service + ']不存在',
};
isFunction(fail) && fail(res);
}
isFunction(complete) && complete(res);
};
}
const providers = {
oauth: [],
share: [],
......
......@@ -3,17 +3,6 @@ import { isArray, hasOwn, isFunction, extend, isPlainObject, isObject } from '@v
import { ref, nextTick, findComponentPropsData, toRaw, updateProps, hasQueueJob, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue';
import { normalizeLocale, LOCALE_EN } from '@dcloudio/uni-i18n';
const eventChannels = {};
const eventChannelStack = [];
function getEventChannel(id) {
if (id) {
const eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
return eventChannelStack.shift();
}
const MP_METHODS = [
'createSelectorQuery',
'createIntersectionObserver',
......@@ -99,8 +88,10 @@ function callHook(name, args) {
name = 'm';
}
else if (name === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
{
this.__eventChannel__ = qa.getEventChannel(args.__id__);
delete args.__id__;
}
}
const hooks = this.$[name];
return hooks && invokeArrayFns(hooks, args);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册