我一直在尝试制作合适的RNN V2树,但是对我来说这是没有意义的……给出此示例:
root: {
bottomTabs: {
children: [
{
component: {
name: 'Main',
options: {
bottomTab: {
text: 'Main',
},
},
},
},
{
component: {
name: 'Secondary',
options: {
bottomTab: {
text: 'Secondary',
},
},
},
},
],
},
},
}
因此,假设我要告诉导航器在活动的底部选项卡中使用红色。如果要实现此目的,则需要将selectedTextColor添加到每个组件
...component: {
...
options: {
...
selectedTextColor: 'red'
}
}
与bottomTabs相同,隐藏等... 如何在父级中设置一次,让子级继承这些选项?
答案 0 :(得分:3)
每个BottomTab的选项都是自底向上解析的,因此bottomTab选项只能定义一次。
让我们看一下更复杂的布局,该布局取自游乐场应用程序:
Navigation.setRoot({
root: {
bottomTabs: {
id: 'BottomTabs',
children: [
{
stack: {
id: 'TAB1_ID',
children: [
{
component: {
name: 'navigation.playground.TextScreen',
passProps: {
text: 'This is tab 1',
myFunction: () => 'Hello from a function!'
},
options: {
topBar: {
visible: true,
animate: false,
title: {
text: 'React Native Navigation!'
}
},
}
}
}
],
options: {
topBar: {
visible: false
},
bottomTab: {
text: 'Tab 1',
icon: require('../images/one.png'),
selectedIcon: require('../images/one.png'),
testID: testIDs.FIRST_TAB_BAR_BUTTON
}
}
}
},
{
stack: {
children: [
{
component: {
name: 'navigation.playground.TextScreen',
passProps: {
text: 'This is tab 2'
}
}
}
],
options: {
bottomTab: {
text: 'Tab 2',
icon: require('../images/two.png'),
testID: testIDs.SECOND_TAB_BAR_BUTTON
}
}
}
},
{
component: {
name: 'navigation.playground.TextScreen',
passProps: {
text: 'This is tab 3',
myFunction: () => 'Hello from a function!'
},
options: {
topBar: {
visible: true,
animate: false
},
bottomTab: {
text: 'Tab 3',
icon: require('../images/one.png'),
selectedIcon: require('../images/one.png')
}
}
}
}
],
options: {
bottomTabs: {
titleDisplayMode: 'alwaysShow',
testID: testIDs.BOTTOM_TABS_ELEMENT
}
}
}
}
});
如您所见,BottomTab
选项可以在堆栈选项或组件的选项中声明。
这是因为解析了每个选项卡的当前布局树中的选项。
重要的是要记住,选项是自下而上解析的,这意味着较深的选项(从根目录开始声明)优先于较高的选项(从根目录开始声明)。
让我们仔细看看BottomTab的第一个孩子。在这种情况下,它是一个stack
,它声明了bottomTab
选项。推送到此堆栈的任何子级都可以覆盖堆栈的bottomTab
选项,因为它在布局树中更深-堆栈的选项可以视为默认选项。