Dom上键值增加随机字符
This commit is contained in:
parent
0022a6b55a
commit
22036bc75d
|
@ -21,6 +21,7 @@ import { findDOMByClassInst } from '../renderer/vnode/VNodeUtils';
|
|||
import { listenSimulatedDelegatedEvents } from '../event/EventBinding';
|
||||
import { Callback } from '../renderer/Types';
|
||||
import { InulaNode } from '../types';
|
||||
import { EVENT_KEY } from './DOMInternalKeys';
|
||||
|
||||
function createRoot(children: any, container: Container, callback?: Callback) {
|
||||
// 清空容器
|
||||
|
@ -89,7 +90,7 @@ function findDOMNode(domOrEle?: Element): null | Element | Text {
|
|||
|
||||
// 情况根节点监听器
|
||||
function removeRootEventLister(container: Container) {
|
||||
const events = (container as any).$EV;
|
||||
const events = (container as any)[EVENT_KEY];
|
||||
if (events) {
|
||||
Object.keys(events).forEach(event => {
|
||||
const listener = events[event];
|
||||
|
|
|
@ -22,9 +22,12 @@ import type { Container, Props } from './DOMOperator';
|
|||
|
||||
import { DomComponent, DomText, TreeRoot } from '../renderer/vnode/VNodeTags';
|
||||
|
||||
const INTERNAL_VNODE = '_inula_VNode';
|
||||
const INTERNAL_PROPS = '_inula_Props';
|
||||
const INTERNAL_NONDELEGATEEVENTS = '_inula_NonDelegatedEvents';
|
||||
const randomKey = Math.random().toString(16).slice(2);
|
||||
const INTERNAL_VNODE = `_inula_VNode_${randomKey}`;
|
||||
const INTERNAL_PROPS = `_inula_Props_${randomKey}`;
|
||||
const INTERNAL_NONDELEGATEEVENTS = `_inula_nonDelegatedEvents_${randomKey}`;
|
||||
export const HANDLER_KEY = `_inula_valueChangeHandler_${randomKey}`;
|
||||
export const EVENT_KEY = `_inula_ev_${randomKey}`;
|
||||
|
||||
// 通过 VNode 实例获取 DOM 节点
|
||||
export function getDom(vNode: VNode): Element | Text | null {
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* 只有值发生变化时才会触发change事件。
|
||||
*/
|
||||
|
||||
const HANDLER_KEY = '_valueChangeHandler';
|
||||
import { HANDLER_KEY } from '../DOMInternalKeys';
|
||||
|
||||
// 判断是否是 check 类型
|
||||
function isCheckType(dom: HTMLInputElement): boolean {
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
import { allDelegatedInulaEvents, portalDefaultDelegatedEvents, simulatedDelegatedEvents } from './EventHub';
|
||||
import { isDocument } from '../dom/utils/Common';
|
||||
import { getNearestVNode, getNonDelegatedListenerMap } from '../dom/DOMInternalKeys';
|
||||
import { EVENT_KEY, getNearestVNode, getNonDelegatedListenerMap } from '../dom/DOMInternalKeys';
|
||||
import { asyncUpdates, runDiscreteUpdates } from '../renderer/TreeBuilder';
|
||||
import { handleEventMain } from './InulaEventMain';
|
||||
import { decorateNativeEvent } from './EventWrapper';
|
||||
|
@ -73,8 +73,8 @@ export function lazyDelegateOnRoot(currentRoot: VNode, eventName: string) {
|
|||
const nativeFullName = isCapture ? nativeEvent + 'capture' : nativeEvent;
|
||||
|
||||
// 事件存储在DOM节点属性,避免多个VNode(root和portal)对应同一个DOM, 造成事件重复监听
|
||||
currentRoot.realNode.$EV = currentRoot.realNode.$EV ?? {};
|
||||
const events = currentRoot.realNode.$EV;
|
||||
currentRoot.realNode[EVENT_KEY] = currentRoot.realNode[EVENT_KEY] ?? {};
|
||||
const events = currentRoot.realNode[EVENT_KEY];
|
||||
|
||||
if (!events[nativeFullName]) {
|
||||
events[nativeFullName] = listenToNativeEvent(nativeEvent, currentRoot.realNode, isCapture);
|
||||
|
|
|
@ -142,7 +142,13 @@ function triggerInulaEvents(
|
|||
const target = nativeEvent.target || nativeEvent.srcElement!;
|
||||
|
||||
// 触发普通委托事件
|
||||
const listenerList: ListenerUnitList = getCommonListeners(nativeEvtName, vNode, nativeEvent, target, isCapture);
|
||||
const listenerList: ListenerUnitList = getCommonListeners(
|
||||
nativeEvtName,
|
||||
vNode,
|
||||
nativeEvent as MouseEvent,
|
||||
target,
|
||||
isCapture
|
||||
);
|
||||
|
||||
let mouseEnterListeners: ListenerUnitList = [];
|
||||
if (inulaEventToNativeMap.get('onMouseEnter')!.includes(nativeEvtName)) {
|
||||
|
|
Loading…
Reference in New Issue