-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
56 lines (44 loc) · 1.31 KB
/
test.js
File metadata and controls
56 lines (44 loc) · 1.31 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const createScene = require('./createScene');
const baseScene = createScene({
render: ({ Layout }) => Layout(),
Layout: ({ Navigation, Content }) => {
const navigation = Navigation();
const content = Content();
return [
'Layout',
...(navigation ? [navigation] : []),
...(content ? [content] : [])
];
},
Navigation: ({ NavigationItem }) => {
const item = NavigationItem();
if (!item) return null;
return ['Navigation', ...(item ? [item] : [])]
},
NavigationItem: null,
Content: null
});
const navItem1 = createScene(baseScene, {
NavigationItem: (_, next) => {
return ['NavItem 1', ...(next() || [])];
}
});
const navItem2 = createScene(baseScene, {
NavigationItem: (_, next) => {
return ['NavItem 2', ...(next() || [])];
}
})
const navItem3 = createScene(baseScene, {
NavigationItem: (_, next) => {
return ['NavItem 3', ...(next() || [])];
}
})
const mainScene = navItem1.decorate(navItem2).decorate(navItem3);
const firstPage = createScene(mainScene, {
Content: () => ['First page']
});
const secondPage = createScene(mainScene, {
Content: () => ['Second page']
});
console.log('/page1', firstPage.render());
console.log('/page2', secondPage.render());