mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-01-12 22:50:10 +08:00
Fabric: Enabling view hierarchy flattening (for <View> component only for now)
Summary: This change implements `onLayoutOnly` for regular bare <View> component (*not* for its descendants!) After this view flattening is actually starting working for all platforms. Reviewed By: mdvacca Differential Revision: D9511001 fbshipit-source-id: 3562dd1b7570a064150f100cc2e1bc4220b81290
This commit is contained in:
committed by
Facebook Github Bot
parent
d00bdb9bb8
commit
c70abb393f
@@ -12,5 +12,32 @@ namespace react {
|
||||
|
||||
const char ViewComponentName[] = "View";
|
||||
|
||||
bool ViewShadowNode::isLayoutOnly() const {
|
||||
#ifdef ANDROID
|
||||
// This feature is not properly tested on Android yet.
|
||||
return false;
|
||||
#else
|
||||
const auto &viewProps = *std::static_pointer_cast<const ViewProps>(props_);
|
||||
|
||||
return
|
||||
// Event listeners
|
||||
!viewProps.onLayout &&
|
||||
// Generic Props
|
||||
viewProps.nativeId.empty() &&
|
||||
// Accessibility Props
|
||||
!viewProps.accessible &&
|
||||
// Style Props
|
||||
viewProps.yogaStyle.overflow == YGOverflowVisible &&
|
||||
viewProps.opacity == 1.0 &&
|
||||
!viewProps.backgroundColor &&
|
||||
!viewProps.foregroundColor &&
|
||||
!viewProps.shadowColor &&
|
||||
viewProps.transform == Transform {} &&
|
||||
viewProps.zIndex == 0 &&
|
||||
// Layout Metrics
|
||||
getLayoutMetrics().borderWidth == EdgeInsets {};
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
|
||||
@@ -15,12 +15,21 @@ namespace react {
|
||||
|
||||
extern const char ViewComponentName[];
|
||||
|
||||
using ViewShadowNode =
|
||||
ConcreteViewShadowNode<
|
||||
/*
|
||||
* `ShadowNode` for <View> component.
|
||||
*/
|
||||
class ViewShadowNode final:
|
||||
public ConcreteViewShadowNode<
|
||||
ViewComponentName,
|
||||
ViewProps,
|
||||
ViewEventEmitter
|
||||
>;
|
||||
> {
|
||||
|
||||
public:
|
||||
using ConcreteViewShadowNode::ConcreteViewShadowNode;
|
||||
|
||||
bool isLayoutOnly() const;
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
|
||||
#pragma mark - Props
|
||||
|
||||
const bool accessible {true};
|
||||
const bool accessible {false};
|
||||
const std::vector<std::string> accessibilityActions {};
|
||||
const std::string accessibilityLabel {""};
|
||||
const AccessibilityTraits accessibilityTraits {AccessibilityTraits::None};
|
||||
|
||||
Reference in New Issue
Block a user