Files
react/packages/react-native-renderer/src/ReactNativeComponentTree.js
T
Sebastian MarkbågeandGitHub 0d5d48af0c Use Map instead of object as map in ReactNativeComponentTree (#16107)
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.
2019-07-10 19:11:36 -07:00

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);
}