2016-05-19 13 views
0

クリック時にナビゲーションメニューを表示して非表示にするボタンを作成しようとしています。 Reduxを使用してコンポーネントに現在の状態を取得していますが、何かがonPress関数で動作していません。 ボタンを押すとthis.state.showNavigation(true/false)の現在の状態を確認したいが、ボタンをクリックした直後に "undefined is not object"エラーが出る。reduxを使用してボタンのクリック時に更新された状態の小道具を設定する

ここではライフサイクルの問題が発生していると思います。私はすでにコンポーネントワイルマウントの状態を次のように設定することでこれを回避しようとしました。

componentWillUpdate(){ 
    this.state = NavigationStore.getState(); 
} 

とにかく役に立たなかったと思います。いくつかのアドバイスは非常に感謝しています。ありがとう! HERESに私のコード:私はかなり奇妙なアプローチを使用していた

class NavigationButton extends React.Component { 
    constructor(props, context) { 
     super(props, context); 
     this.state = NavigationStore.getState(); 
     NavigationStore.subscribe(() => { 
      this.setState(NavigationStore.getState()); 
     }); 
     // alert(this.state.showNavigation); 
    } 

    render() { 
     return (
      <TouchableOpacity 
       onPress={this.handlePressButton} 
       style={navigationButtonStyles.button}> 

       <Image source={buttonImage} /> 

      </TouchableOpacity> 
     ); 
    } 

    handlePressButton() { 
     if(this.state.showNavigation){ 
      NavigationStore.dispatch({ 
       type: 'HIDE_NAVIGATION', 
      }); 
     } 
     else{ 
      NavigationStore.dispatch({ 
       type: 'SHOW_NAVIGATION', 
      }); 
     } 
    } 
}; 
+0

あなたの問題を解決するのに十分な情報ではありませんが、少なくとも私はあなたにいくつかの問題を指摘することができます: 1.状態を直接変更しないでください。 'this.state = NavigationStore.getState() '。代わりに 'this.setState'を使用してください。 2.' componentWillUpdate'に状態を設定しないでください。そのために他のライフサイクル手法を使用してください。 3.少なくとも開始時にReduxから 'connect'関数を使用しようとします 4.' navigationButtonStyles'が定義されていませんanyware – trashgenerator

答えて

0

、私が全部反応-Reduxのパッケージを使用していないと私の店を接続することができませんでした。私はhttps://github.com/bartonhammond/snowflakeに深く掘り下げて解決しました。雪片の例は基本を理解するのに本当に役立ちました!

関連する問題