mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-03-06 22:37:14 +08:00
Fabric: []-family of methods was removed from ComponentDescriptorRegistry
Summary: Motivation: * We don't use them much, and we already have `at`-methods, which are better. * We don't want to expose `ComponentDescriptor`s as shared pointers (because it's not clear, not so performant, and because we don't want to store them as shared pointer in the future); * In idiomatic C++ `[]` operator has mutating semantic, that's not what we want to communicate via the interface of the class. Reviewed By: sahrens Differential Revision: D14963487 fbshipit-source-id: dbfddee2ba90d70c3bb8dcf1959d553571c47bab
This commit is contained in:
committed by
Facebook Github Bot
parent
83c0d025f1
commit
45ae1e4411
@@ -20,23 +20,7 @@ void ComponentDescriptorRegistry::registerComponentDescriptor(
|
||||
_registryByName[componentName] = componentDescriptor;
|
||||
}
|
||||
|
||||
const SharedComponentDescriptor ComponentDescriptorRegistry::operator[](
|
||||
const SharedShadowNode &shadowNode) const {
|
||||
ComponentHandle componentHandle = shadowNode->getComponentHandle();
|
||||
return _registryByHandle.at(componentHandle);
|
||||
}
|
||||
|
||||
const SharedComponentDescriptor ComponentDescriptorRegistry::operator[](
|
||||
const ComponentName &componentName) const {
|
||||
auto it = _registryByName.find(componentName);
|
||||
if (it == _registryByName.end()) {
|
||||
throw std::invalid_argument(
|
||||
("Unable to find componentDescriptor for " + componentName).c_str());
|
||||
}
|
||||
return it->second;
|
||||
}
|
||||
|
||||
static const std::string componentNameByReactViewName(std::string viewName) {
|
||||
static ComponentName componentNameByReactViewName(ComponentName viewName) {
|
||||
// We need this function only for the transition period;
|
||||
// eventually, all names will be unified.
|
||||
|
||||
@@ -86,8 +70,8 @@ static const std::string componentNameByReactViewName(std::string viewName) {
|
||||
return viewName;
|
||||
}
|
||||
|
||||
const ComponentDescriptor &ComponentDescriptorRegistry::at(
|
||||
ComponentName componentName) const {
|
||||
ComponentDescriptor const &ComponentDescriptorRegistry::at(
|
||||
ComponentName const &componentName) const {
|
||||
auto unifiedComponentName = componentNameByReactViewName(componentName);
|
||||
|
||||
auto it = _registryByName.find(unifiedComponentName);
|
||||
@@ -102,28 +86,26 @@ const ComponentDescriptor &ComponentDescriptorRegistry::at(
|
||||
return *it->second;
|
||||
}
|
||||
|
||||
const ComponentDescriptor &ComponentDescriptorRegistry::at(
|
||||
ComponentDescriptor const &ComponentDescriptorRegistry::at(
|
||||
ComponentHandle componentHandle) const {
|
||||
return *_registryByHandle.at(componentHandle);
|
||||
}
|
||||
|
||||
SharedShadowNode ComponentDescriptorRegistry::createNode(
|
||||
Tag tag,
|
||||
const std::string &viewName,
|
||||
ComponentName const &viewName,
|
||||
Tag rootTag,
|
||||
const folly::dynamic &props,
|
||||
const SharedEventTarget &eventTarget) const {
|
||||
ComponentName componentName = componentNameByReactViewName(viewName);
|
||||
const SharedComponentDescriptor &componentDescriptor = (*this)[componentName];
|
||||
|
||||
SharedShadowNode shadowNode = componentDescriptor->createShadowNode({
|
||||
folly::dynamic const &props,
|
||||
SharedEventTarget const &eventTarget) const {
|
||||
auto unifiedComponentName = componentNameByReactViewName(viewName);
|
||||
auto const &componentDescriptor = this->at(unifiedComponentName);
|
||||
return componentDescriptor.createShadowNode({
|
||||
/* .tag = */ tag,
|
||||
/* .rootTag = */ rootTag,
|
||||
/* .props = */ componentDescriptor->cloneProps(nullptr, RawProps(props)),
|
||||
/* .props = */ componentDescriptor.cloneProps(nullptr, RawProps(props)),
|
||||
/* .eventEmitter = */
|
||||
componentDescriptor->createEventEmitter(std::move(eventTarget), tag),
|
||||
componentDescriptor.createEventEmitter(std::move(eventTarget), tag),
|
||||
});
|
||||
return shadowNode;
|
||||
}
|
||||
|
||||
void ComponentDescriptorRegistry::setFallbackComponentDescriptor(
|
||||
@@ -132,7 +114,7 @@ void ComponentDescriptorRegistry::setFallbackComponentDescriptor(
|
||||
registerComponentDescriptor(descriptor);
|
||||
}
|
||||
|
||||
const SharedComponentDescriptor
|
||||
ComponentDescriptor::Shared
|
||||
ComponentDescriptorRegistry::getFallbackComponentDescriptor() const {
|
||||
return _fallbackComponentDescriptor;
|
||||
}
|
||||
|
||||
@@ -23,29 +23,28 @@ using SharedComponentDescriptorRegistry =
|
||||
*/
|
||||
class ComponentDescriptorRegistry {
|
||||
public:
|
||||
using Shared = std::shared_ptr<const ComponentDescriptorRegistry>;
|
||||
|
||||
void registerComponentDescriptor(
|
||||
SharedComponentDescriptor componentDescriptor);
|
||||
|
||||
const ComponentDescriptor &at(ComponentName componentName) const;
|
||||
const ComponentDescriptor &at(ComponentHandle componentHandle) const;
|
||||
ComponentDescriptor const &at(ComponentName const &componentName) const;
|
||||
ComponentDescriptor const &at(ComponentHandle componentHandle) const;
|
||||
|
||||
const SharedComponentDescriptor operator[](
|
||||
const SharedShadowNode &shadowNode) const;
|
||||
const SharedComponentDescriptor operator[](
|
||||
const ComponentName &componentName) const;
|
||||
SharedShadowNode createNode(
|
||||
Tag tag,
|
||||
const std::string &viewName,
|
||||
ComponentName const &viewName,
|
||||
Tag rootTag,
|
||||
const folly::dynamic &props,
|
||||
const SharedEventTarget &eventTarget) const;
|
||||
folly::dynamic const &props,
|
||||
SharedEventTarget const &eventTarget) const;
|
||||
|
||||
void setFallbackComponentDescriptor(SharedComponentDescriptor descriptor);
|
||||
const SharedComponentDescriptor getFallbackComponentDescriptor() const;
|
||||
ComponentDescriptor::Shared getFallbackComponentDescriptor() const;
|
||||
|
||||
private:
|
||||
better::map<ComponentHandle, SharedComponentDescriptor> _registryByHandle;
|
||||
better::map<ComponentName, SharedComponentDescriptor> _registryByName;
|
||||
SharedComponentDescriptor _fallbackComponentDescriptor;
|
||||
ComponentDescriptor::Shared _fallbackComponentDescriptor;
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
||||
@@ -52,9 +52,9 @@ SharedShadowNode UITemplateProcessor::runCommand(
|
||||
tag + tagOffset, type, rootTag, props, nullptr);
|
||||
if (parentTag > -1) { // parentTag == -1 indicates root node
|
||||
auto parentShadowNode = nodes[parentTag];
|
||||
const SharedComponentDescriptor &componentDescriptor =
|
||||
componentDescriptorRegistry[parentShadowNode];
|
||||
componentDescriptor->appendChild(parentShadowNode, nodes[tag]);
|
||||
auto const &componentDescriptor = componentDescriptorRegistry.at(
|
||||
parentShadowNode->getComponentHandle());
|
||||
componentDescriptor.appendChild(parentShadowNode, nodes[tag]);
|
||||
}
|
||||
} else if (opcode == "returnRoot") {
|
||||
if (DEBUG_FLY) {
|
||||
|
||||
Reference in New Issue
Block a user