forked from wix/react-native-navigation
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLayoutComponent.tsx
More file actions
37 lines (35 loc) · 1.43 KB
/
LayoutComponent.tsx
File metadata and controls
37 lines (35 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import React, { Component } from 'react';
import { View } from 'react-native';
import { BottomTabs } from './BottomTabs';
import { ComponentProps } from '../ComponentProps';
import { ComponentScreen } from './ComponentScreen';
import { Stack } from './Stack';
import { SideMenuRoot, SideMenuCenter, SideMenuLeft, SideMenuRight } from './SideMenu';
export const LayoutComponent = class extends Component<ComponentProps> {
render() {
switch (this.props.layoutNode.type) {
case 'BottomTabs':
return <BottomTabs layoutNode={this.props.layoutNode} />;
case 'Stack':
return <Stack layoutNode={this.props.layoutNode} />;
case 'Component':
return <ComponentScreen layoutNode={this.props.layoutNode} />;
case 'SideMenuRoot':
return <SideMenuRoot layoutNode={this.props.layoutNode} />;
case 'SideMenuLeft':
return <SideMenuLeft layoutNode={this.props.layoutNode} />;
case 'SideMenuCenter':
return <SideMenuCenter layoutNode={this.props.layoutNode} />;
case 'SideMenuRight':
return <SideMenuRight layoutNode={this.props.layoutNode} />;
}
return <View />;
}
componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
const err = new Error(
`Error while trying to render layout ${this.props.layoutNode.nodeId} of type ${this.props.layoutNode.type}: ${error}\n${errorInfo?.componentStack}`
);
(err as any).cause = error;
throw err;
}
};