2016-05-19 1 views
0

Я пытаюсь создать кнопку, которая отображает и скрывает меню навигации по щелчку. Я использую Redux для получения текущего состояния в Component, но что-то не работает с функцией onPress. При нажатии кнопки я хочу проверить текущее состояние this.state.showNavigation (может быть true/false), но сразу же после нажатия кнопки я получаю сообщение об ошибке «undefined is not a object».Установить обновленные реквизиты состояния при нажатии кнопки с помощью reducex

Я думаю, что я столкнулся с проблемой жизненного цикла здесь. Я уже пытался отправить вокруг этого с помощью установки состояния в componentWillMount так:

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. попытайтесь использовать функцию 'connect' от Redux, по крайней мере, для начала 4.' navigationButtonStyles' не определяется каким-либо программным обеспечением – trashgenerator

ответ

0

я использовал довольно странный подход, я не использовал пакет среагировать-перевождь для всего этого и не мог соединить мой магазин. Я глубоко погрузился в https://github.com/bartonhammond/snowflake и решил его, пример снежинки был очень полезен, чтобы понять основы!

Смежные вопросы