2017-01-17 5 views
0

Я хочу запустить функцию при изменении состояния в моем приложении. У меня модальный с кнопкой, которая меняет состояние.React Native Выполнение функции при изменении состояния

Мой дом компонент (отредактированный)

... 
constructor(props) { 
super(props); 
    this.state = { 
    color:'red', 
    modalVisible: false, 
    } 
} 
... 
render() { 
return (
    <View> 

     <Modal 
     animationType={"slide"} 
     transparent={false} 
     visible={this.state.modalVisible} 
     > 
     <View style={{marginTop: 22}}> 
     <TouchableOpacity onPress={()=>this.setState({color:'blue'})}> 
      <Text>Blue</Text> 
     <TouchableOpacity> 
     <TouchableOpacity onPress={()=>this.setModalVisible(false)}> 
      <Text>Blue</Text> 
     <TouchableOpacity> 
     </View> 
    </Modal> 

    <Text style={{color:this.state.color}}> 
    Foo 
    </Text> 
    </View> 
) 
... 

Однако, когда я закрываю модальных, цвет моего текста не меняется на синий. Он остается красным до тех пор, пока я не открою модальную резервную копию, а затем снова закрою. Его как состояние «цвет» не обновляется. Я столкнулся с этим, прежде чем использовать redux и «componentWillReceiveProps (nextProps)», но это заставило меня оказаться в одном компоненте.

Я использую собственный модальный компонент из документов. https://facebook.github.io/react-native/docs/modal.html

+0

Не могли бы вы оставить немного больше кода, чтобы показать, как связаны две ваши сниппеты? – ArneHugo

+0

Я отредактировал свой код, чтобы отразить, как они связаны. – gbland777

+0

Вы посмотрели [link] (https://rnplay.org/apps/fDGs3A) в ответ @ fumi_hwh? Кажется, работает со мной. Если это не поможет вам решить проблему, попробуйте создать исполняемый пример в [rnplay.org] (https://rnplay.org), который воспроизводит вашу проблему. (Изменить: [Изменено его пример] (https://rnplay.org/apps/rKeOYg), чтобы быть немного более похожим на ваш.) – ArneHugo

ответ

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