2017-12-18 2 views
0

TabNavigator에는 자체 상태가없는 것 같습니다. state 또는 props을 사용할 수 있습니까?TabStackNavigator의 상태?

통지 TabIcon에 the number of unread notification을 표시하고 싶습니다.

export default TabNavigator(
    { 
    ... 
    Noti: { 
     screen: NotificationStackNavigator, 
    }, 
    ... 
    }, 
    { 
    navigationOptions: ({ navigation }) => ({ 
     header: null, 
     tabBarIcon: ({ focused }) => { 
     const { routeName } = navigation.state; 
     let iconName; 
     switch (routeName) { 
      ... 
      case 'Noti': 
      iconName = 'ios-notifications'; 
      break; 
      ... 
     } 
     ... 
     if(iconName == 'ios-notifications') { 
      return (
      <IconBadge 
       MainElement={ 
       <Ionicons 
        name={iconName} 
        size={30} 
        style={{ marginBottom: -3 }} 
        color={focused ? Colors.tabIconSelected : Colors.tabIconDefault}/> 
       } 
       BadgeElement={ 
       <Text style={{color:'#FFFFFF'}}> 
        {{this.state.notifications}} // my goal 
       </Text> 
       } 
       IconBadgeStyle={{ 
       backgroundColor: '#f64e59', 
       position: 'absolute', 
       right:-10, 
       top:0, 
       }} 
      /> 
     ); 
     } 
     ... 

불명확 한 점이 있으면 알려주십시오. 미리 감사드립니다.

업데이트 내 TabNavigator를 리팩토링 할 계획입니다. 이게 당신이하는 말인가요?

export default TabNavigator( 

to 

const MainTabNavigator = TabNavigator(

class MainTabNavigator extends Component { 
    state = {notification} 

export default connect(...)(MainTabNavigator); 

업데이트 2 MainTabNavigator의 상위 레벨 구성 요소는 다른가 TabNavigator입니다. 다른 해결책이 있습니까?

const RootTabNavigator = TabNavigator ({ 
    Auth: { 
     screen: AuthStackNavigator, 
    }, 
    Welcome: { 
     screen: WelcomeScreen, 
    }, 
    Main: { 
     screen: MainTabNavigator, 
    }, 

답변

1

당신은 전체 문서는 답변을 here

+0

감사하지만 난 당신이 내 질문을 이해 생각하지 않는다 screenprops

const TabNav = TabNavigator({ // config }); <TabNav screenProps={/* this prop will get passed to the screen components as this.props.screenProps */} /> 

를 통해 추가 사용자 소품을 전달할 수 있습니다. TabNavigator에서 state와 props를'// config'로 주석 처리하고 싶습니다. 그리고 미안 해요 당신의 예제 코드는 나에게 이해가되지 않습니다. –

+0

음'TabNavigator'는 상태를 유지하지 않으므로 상태를 얻지 못하지만 소품을받습니다. 귀하의 설정에서'this.props.myCustomProp'을 참조 할 수 있으며 렌더링시'에 설정된 일부 값 –

+0

이 사실이 아니기를 바랍니다. 나는 얼마나 많은 읽지 않은 알림을 추적 할 수있는 방법이 없습니다. –