2017-09-13 22 views
0

NavigatorIOS React Nativeコンポーネントの通知ボタンを押したときにサイドメニューが表示されるようにしようとしていますが、親の状態が変更されたときに更新されます。したがって、通知ボタンを押すことは、自分がしたいことをしていません。親コンポーネントと子コンポーネントは次のとおりです。 NavigatorIOSを使用して親状態が変更されたときに子コンポーネントを更新するにはどうすればよいですか?React Native NavigatorIOS子コンポーネントが親ステートの変更時に更新されない

export default class App extends React.Component { 



    constructor(props) { 
     super(props); 
     this.state = { 
      rightMenuOpen: false 
     } 

     this.rightButtonPress = this.rightButtonPress.bind(this); 
     } 

    rightButtonPress() { 
     this.setState({rightMenuOpen: true}); 
    } 

    render() { 
     return (
      <NavigatorIOS 
       initialRoute={{ 
       component: Home, 
       rightButtonIcon: source=require('./img/notifications.png'), 
       onRightButtonPress: this.rightButtonPress, 
       passProps: {index: 1, rightMenuOpen: this.state.rightMenuOpen}, 
       }} 
       style={{flex: 1}} 
      /> 
     ) 
    } 
} 

class Home extends React.Component { 
    constructor(props) { 
     super(props); 
    } 


    render() { 
     const menu = <Switch/> 
     return (

      <View style={styles.body}> 
       <SideMenu 
        menu={infoText} 
        menuPosition="right" 
        disableGestures={true} 
        isOpen={this.props.rightMenuOpen} 
       > 
        <WebView 
         source={{uri: 'https://www.michigandaily.com/'}} 
         bounces={false} 
        /> 
       </SideMenu> 
      </View> 
     ); 
    } 
} 

答えて

0

passPropsの値を変更しても再レンダリングが発生しないため、これを試行している方法は機能しません。必要なのは、Event EmitterまたはState Managementフレームワークを使用して親から子に信号を渡す方法です。イベント・エミッターを使用する方法の

例: https://colinramsay.co.uk/2015/07/04/react-native-eventemitters.html

Iはまた、Reduxの又はMobx等状態管理フレームワークを使用することをお勧めします(私は、その簡単にするためMobxを好みます)。

ここでは、Mobxについて学ぶことができます:http://mobx.js.org

関連する問題