mirror of
https://github.com/hanzoai/react.git
synced 2026-09-24 17:02:27 +00:00
Real Maps should now be used in RN JS engines. In theory this should be faster (but might not actually be in practice), and it avoids hitting upper bounds of property max counts. We don't use these types of Maps in Fabric.
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import invariant from 'shared/invariant';
|
|
|
|
const instanceCache = new Map();
|
|
const instanceProps = new Map();
|
|
|
|
export function precacheFiberNode(hostInst, tag) {
|
|
instanceCache.set(tag, hostInst);
|
|
}
|
|
|
|
export function uncacheFiberNode(tag) {
|
|
instanceCache.delete(tag);
|
|
instanceProps.delete(tag);
|
|
}
|
|
|
|
function getInstanceFromTag(tag) {
|
|
return instanceCache.get(tag) || null;
|
|
}
|
|
|
|
function getTagFromInstance(inst) {
|
|
let tag = inst.stateNode._nativeTag;
|
|
if (tag === undefined) {
|
|
tag = inst.stateNode.canonical._nativeTag;
|
|
}
|
|
invariant(tag, 'All native instances should have a tag.');
|
|
return tag;
|
|
}
|
|
|
|
export {
|
|
getInstanceFromTag as getClosestInstanceFromNode,
|
|
getInstanceFromTag as getInstanceFromNode,
|
|
getTagFromInstance as getNodeFromInstance,
|
|
};
|
|
|
|
export function getFiberCurrentPropsFromNode(stateNode) {
|
|
return instanceProps.get(stateNode._nativeTag) || null;
|
|
}
|
|
|
|
export function updateFiberProps(tag, props) {
|
|
instanceProps.set(tag, props);
|
|
}
|