Files
react/packages/react-native-renderer/src/ReactNativeComponentTree.js
2018-01-22 09:58:35 -08:00

53 lines
1.2 KiB
JavaScript

/**
* Copyright (c) 2013-present, Facebook, Inc.
*
* 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 'fbjs/lib/invariant';
const instanceCache = {};
const instanceProps = {};
export function precacheFiberNode(hostInst, tag) {
instanceCache[tag] = hostInst;
}
export function uncacheFiberNode(tag) {
delete instanceCache[tag];
delete instanceProps[tag];
}
function getInstanceFromTag(tag) {
if (typeof tag === 'number') {
return instanceCache[tag] || null;
} else {
// Fabric will invoke event emitters on a direct fiber reference
return tag;
}
}
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[stateNode._nativeTag] || null;
}
export function updateFiberProps(tag, props) {
instanceProps[tag] = props;
}