浏览代码

Implement push to first tab button in SideMenu

Guy Carmeli 8 年前
父节点
当前提交
90fd019d19
共有 2 个文件被更改,包括 87 次插入49 次删除
  1. 48
    15
      example-redux/src/screens/FirstTabScreen.js
  2. 39
    34
      example-redux/src/screens/SecondTabScreen.js

+ 48
- 15
example-redux/src/screens/FirstTabScreen.js 查看文件

@@ -46,23 +46,56 @@ class FirstTabScreen extends Component {
46 46
   }
47 47
 
48 48
   onNavigatorEvent(event) {
49
-    switch (event.id) {
50
-      case 'edit':
51
-        Alert.alert('NavBar', 'Edit button pressed');
52
-        break;
53
-
54
-      case 'add':
55
-        Alert.alert('NavBar', 'Add button pressed');
56
-        break;
57
-
58
-      case 'selectedTabChanged':
59
-        this.onTabSelected(event.position);
60
-        break;
49
+    if (event.type == 'DeepLink') {
50
+      this.handleDeepLink(event);
51
+    } else {
52
+      switch (event.id) {
53
+        case 'edit':
54
+          Alert.alert('NavBar', 'Edit button pressed');
55
+          break;
56
+
57
+        case 'add':
58
+          Alert.alert('NavBar', 'Add button pressed');
59
+          break;
60
+
61
+        case 'selectedTabChanged':
62
+          this.onTabSelected(event.position);
63
+          break;
64
+
65
+        default:
66
+          console.log('Unhandled event ' + event.id);
67
+          break;
68
+      }
69
+    }
70
+  }
61 71
 
62
-      default:
63
-        console.log('Unhandled event ' + event.id);
64
-        break;
72
+  handleDeepLink(event) {
73
+    const parts = event.link.split('/');
74
+    if (parts[0] == 'tab1' && parts[1] == 'pushScreen') {
75
+      this.props.navigator.toggleDrawer({
76
+        side: 'left',
77
+        animated: true,
78
+        to: 'closed'
79
+      });
80
+
81
+      this.props.navigator.push({
82
+        title: "Pushed from SideMenu",
83
+        screen: parts[2],
84
+        passProps: {
85
+          str: 'This is a prop passed in \'navigator.push()\'!',
86
+          obj: {
87
+            str: 'This is a prop passed in an object!',
88
+            arr: [
89
+              {
90
+                str: 'This is a prop in an object in an array in an object!'
91
+              }
92
+            ]
93
+          },
94
+          num: 1234
95
+        }
96
+      });
65 97
     }
98
+    return;
66 99
   }
67 100
 
68 101
   onTabSelected(position) {

+ 39
- 34
example-redux/src/screens/SecondTabScreen.js 查看文件

@@ -82,45 +82,50 @@ class SecondTabScreen extends Component {
82 82
 
83 83
   onNavigatorEvent(event) {
84 84
     if (event.type == 'DeepLink') {
85
-      console.log('SecondTabScreen', 'onNavigatorEvent ' + event.link);
86
-      const parts = event.link.split('/');
87
-      if (parts[0] == 'tab2' && parts[1] == 'pushScreen') {
88
-        this.props.navigator.toggleDrawer({
89
-          side: 'left',
90
-          animated: true,
91
-          to: 'closed'
92
-        });
93
-
94
-        this.props.navigator.push({
95
-          title: "Pushed from SideMenu",
96
-          screen: parts[2],
97
-          passProps: {
98
-            str: 'This is a prop passed in \'navigator.push()\'!',
99
-            obj: {
100
-              str: 'This is a prop passed in an object!',
101
-              arr: [
102
-                {
103
-                  str: 'This is a prop in an object in an array in an object!'
104
-                }
105
-              ]
106
-            },
107
-            num: 1234
108
-          }
109
-        });
85
+      this.handleDeepLink(event);
86
+    } else {
87
+      switch (event.id) {
88
+        case 'left':
89
+          Alert.alert('NavBar', 'Left button pressed');
90
+          break;
91
+        case 'right':
92
+          Alert.alert('NavBar', 'Right button pressed');
93
+          break;
110 94
       }
111
-      return;
112 95
     }
96
+    console.log('ListScreen', 'Unhandled event ' + event.id);
97
+  }
113 98
 
114
-    switch (event.id) {
115
-      case 'left':
116
-        Alert.alert('NavBar', 'Left button pressed');
117
-        break;
118
-      case 'right':
119
-        Alert.alert('NavBar', 'Right button pressed');
120
-        break;
99
+  handleDeepLink(event) {
100
+    const parts = event.link.split('/');
101
+    if (parts[0] == 'tab2' && parts[1] == 'pushScreen') {
102
+      this.props.navigator.toggleDrawer({
103
+        side: 'left',
104
+        animated: true,
105
+        to: 'closed'
106
+      });
107
+
108
+      this.props.navigator.push({
109
+        title: "Pushed from SideMenu",
110
+        screen: parts[2],
111
+        passProps: {
112
+          str: 'This is a prop passed in \'navigator.push()\'!',
113
+          obj: {
114
+            str: 'This is a prop passed in an object!',
115
+            arr: [
116
+              {
117
+                str: 'This is a prop in an object in an array in an object!'
118
+              }
119
+            ]
120
+          },
121
+          num: 1234
122
+        }
123
+      });
121 124
     }
122
-    console.log('ListScreen', 'Unhandled event ' + event.id);
125
+    return;
126
+
123 127
   }
128
+
124 129
 }
125 130
 
126 131
 const styles = StyleSheet.create({