【发布时间】:2019-08-28 15:01:10
【问题描述】:
我有一个带有 React Navigation 的 React Native 应用程序,我需要根据 Redux 状态显示或隐藏一个选项卡。我正在使用createBottomTabNavigator 并写了这个:
function createTabNavigator(props:TabNavigatorProps){
debugger;
const isClient = WHAT_TO_PUT_HERE??
const tabs = isClient
? {
//something
}
: {
//something else
}
return createBottomTabNavigator(
tabs,
{
defaultNavigationOptions: ({ navigation }) => ({
tabBarIcon: ... ,
tabBarLabel: ...,
}
tabBarComponent: (props) => customTabBar(props, isClient),
tabBarOptions: {
...
},
});
};
如果我手动将isClient 设置为true 或false,我的createTabNavigator 会按预期工作,尽管我需要在redux 状态下这样做。
我也尝试过connect,并以正确的状态调用mapStateToProps,但它不会再次调用createTabNavigator,因此状态更改不会更新到我的视图层次结构。
如何根据 Redux 状态添加/删除选项卡(并且实际上完全重新渲染,因为该选项卡还涉及整个栏的一些自定义样式/渲染)?
【问题讨论】:
-
你不能将你的
customTabBar连接到 redux(想象它是一个不同的组件)并让它知道 redux 当前状态吗? -
@Auticcat 不,因为选项卡本身是动态的,并且在
createTabNavigator中定义并直接传递给createBottomTabNavigator(并且tabs根据redux 状态而变化),而tabBarComponent是一个本身并不真正“了解”选项卡的组件(它只是检查isClient并通过包裹它在选项卡栏周围添加一些视觉装饰,而不触及实际选项卡栏的内部)。
标签: react-native redux react-navigation