2016-06-13 2 views
0

の背景色を変更します次のようになります。は私が<code>Navigator</code>をレンダリングする<code>React.Component</code>を拡張していますリアクトナビゲータオブジェクト

type Props = { 
    navigator: Navigator; 
} 

class BTMapView extends React.Component { 
    props: Props; 
    constructor(props: Props) { 
    super(props); 
    ... 
    } 
} 

これで、this.props.navigatorのナビゲータオブジェクトを参照できるようになりました。このAPIを使用して、ナビゲーションバーの背景色を強制的にAPI呼び出しでオーバーライドするにはどうすればよいですか?

SOLUTION:

class BTNavigator extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     navBarStyle: styles.navBar, 
    }; 
    } 

    render() { 
    return (
     <Navigator 
     style={styles.container} 
     initialRoute={{}} 
     renderScene={this.renderScene} 
     navigationBar={ 
      <NavigationBar 
      routeMapper={NavigationBarRouteMapper} 
      style={this.state.navBarStyle} 
      /> 
     } 
     /> 
    ); 
    } 

    renderScene = (route, navigator) => { 
    ... 

    // pass both navigator and a reference to this 
    return <LoginScreen navigator={navigator} btNavigator={this} /> 
    } 

    setNavBarStyle(style) { 
    this.setState({ 
     navBarStyle: style, 
    }); 
    } 
} 

navigatorbtNavigatorを使用します。

type Props = { 
    navigator: Navigator, 
    btNavigator: BTNavigator, 
}; 

class LoginScreen extends React.Component { 
    props: Props; 

    foo() { 
    this.props.btNavigator.setNavBarStyle({ 
     backgroundColor: 'black', 
    }); 

    this.props.navigator.push({ 
     ... 
    }) 
    } 
} 

答えて

1

まずNavigatorといくつかの追加の状態や方法などを格納するNavigatorWrapperクラスを作ります。

setNavBarRed() { 
    this.setState({navBarColor: 'red'}); 
} 

render()方法であなたがNavigationBarスタイルのための追加チェックして上に書かれているだけのようNavigatorをレンダリングします。スタイルにはbackgroundColor: this.state.navBarColorと設定してください。

そして最後に、今、あなたはあなたの小道具を使用することができます。this.props.navigatorWrapper.setNavBarRed()

あなたはreact-reduxからconnectを使用している場合は、connectコールにwithRef引数を渡す必要があることに注意してください。

+0

ありがとうございます!スタイルを 'state'に移してセッター関数を追加すると、私は問題を解決するのに役立ちました。 –

+0

ここにあります。それが参考になった場合は、回答をアップしてください。 – neciu

関連する問題