[ReactNative] Fix Text Updating Crash
Summary: @public {D1953613} added an optimization that allowed for shadow nodes that are not backed by views, but didn't actually work robustly in the remove case because the indices can get out of sync. That diff also started returning nil for raw text nodes, which triggered this bug and broke "see more" functionality in the `FBTextWithEntities` and `ExpandingText` components, leading to crashes in the Groups app. This diff fixes the issue by simply returning `UIView` placeholders again. Slight perf/ memory cost but no more crashes and there should be no other adverse affects. We'll need to think up something more clever in order to properly support `nil` views in the future, probably something that uses the shadow hierarchy to build the View hierarchy, rather than mirroring identical commands to both - see #1102. Test Plan: - TextUpdateTest fails without native changes, now passes with them. - ExpandingText example no longer crashes. - See More in Groups app no longer crashes.
This commit is contained in:
parent
a4616bff3f
commit
5e110d2776
|
@ -17,7 +17,7 @@ RCT_EXPORT_MODULE()
|
|||
|
||||
- (UIView *)view
|
||||
{
|
||||
return nil;
|
||||
return [[UIView alloc] init]; // TODO(#1102) Remove useless views.
|
||||
}
|
||||
|
||||
- (RCTShadowView *)shadowView
|
||||
|
|
|
@ -24,8 +24,6 @@ var {
|
|||
Text,
|
||||
} = React;
|
||||
|
||||
var MIX_TYPES = false; // TODO(#6916648): fix bug and set true
|
||||
|
||||
var TestManager = NativeModules.TestManager || NativeModules.SnapshotTestManager;
|
||||
|
||||
var TextUpdateTest = React.createClass({
|
||||
|
@ -42,13 +40,12 @@ var TextUpdateTest = React.createClass({
|
|||
);
|
||||
},
|
||||
render: function() {
|
||||
var extraText = MIX_TYPES ? 'raw text' : <Text>wrapped text</Text>;
|
||||
return (
|
||||
<Text
|
||||
style={styles.container}
|
||||
onPress={() => this.setState({seeMore: !this.state.seeMore})}>
|
||||
<Text>Tap to see more (bugs)...</Text>
|
||||
{this.state.seeMore && extraText}
|
||||
{this.state.seeMore && 'raw text'}
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue