diff --git a/CHANGELOG.md b/CHANGELOG.md index baecec7b..b9010423 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.50 (2023-05-23) +- **core**: 解决IE11不兼容Symbol问题 + ## 0.0.49 (2023-05-19) - **core**: 解决当组件被销毁,业务若异步(定时器)调用setState修改状态,可能出现路径错误问题。 diff --git a/libs/horizon/package.json b/libs/horizon/package.json index 35b506ef..286222ac 100644 --- a/libs/horizon/package.json +++ b/libs/horizon/package.json @@ -4,7 +4,7 @@ "keywords": [ "horizon" ], - "version": "0.0.49", + "version": "0.0.50", "homepage": "", "bugs": "", "main": "index.js", diff --git a/libs/horizon/src/external/JSXElement.ts b/libs/horizon/src/external/JSXElement.ts index ccf43079..5ff3db84 100644 --- a/libs/horizon/src/external/JSXElement.ts +++ b/libs/horizon/src/external/JSXElement.ts @@ -40,6 +40,14 @@ export function JSXElement(type, key, ref, vNode, props, source: Source | null) // 所属的class组件,clonedeep jsxElement时需要防止无限循环 [BELONG_CLASS_VNODE_KEY]: vNode, }; + // 兼容IE11不支持Symbol + if (typeof BELONG_CLASS_VNODE_KEY === 'string') { + Object.defineProperty(ele, BELONG_CLASS_VNODE_KEY, { + configurable: false, + enumerable: false, + value: vNode, + }); + } if (isDev) { // 为了test判断两个 JSXElement 对象是否相等时忽略src属性,需要设置src的enumerable为false Object.defineProperty(ele, 'src', { diff --git a/libs/horizon/src/renderer/vnode/VNode.ts b/libs/horizon/src/renderer/vnode/VNode.ts index 4911f887..bc56dee5 100644 --- a/libs/horizon/src/renderer/vnode/VNode.ts +++ b/libs/horizon/src/renderer/vnode/VNode.ts @@ -38,7 +38,7 @@ import type { Hook } from '../hooks/HookType'; import { InitFlag } from './VNodeFlags'; import { Observer } from '../../horizonx/proxy/Observer'; -export const BELONG_CLASS_VNODE_KEY = Symbol('belongClassVNode'); +export const BELONG_CLASS_VNODE_KEY = typeof Symbol === 'function' ? Symbol('belongClassVNode') : 'belongClassVNode'; export class VNode { tag: VNodeTag;