Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 响应本机在状态更改时执行函数_Reactjs_React Native - Fatal编程技术网

Reactjs 响应本机在状态更改时执行函数

Reactjs 响应本机在状态更改时执行函数,reactjs,react-native,Reactjs,React Native,我想在我的应用程序状态发生变化时启动一个函数。我有一个模式,带有一个改变状态的按钮 我的主页组件已编辑 ... constructor(props) { super(props); this.state = { color:'red', modalVisible: false, } } ... render() { return ( <View> <Modal animationType={"slide"}

我想在我的应用程序状态发生变化时启动一个函数。我有一个模式,带有一个改变状态的按钮

我的主页组件已编辑

...
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和“componentWillReceivePropsnextProps”之前,我就遇到过这种情况,但这让我很难在同一个组件中工作


我正在使用文档中的本机模态组件

可触摸?触控高光

除了TouchaleHighlight标签,我在您的代码中没有发现任何问题


你能多发布一些代码来展示你的两个代码片段是如何关联的吗?我编辑了我的代码以反映它们是如何关联的。你看过in@fumi_-hwh的答案了吗?似乎对我有用。如果它不能帮助您解决问题,请尝试创建一个可运行的示例来重现您的问题。编辑:更像你的。你有解决办法吗?我有同样的问题。例如emty page。自从我问这个问题已经三年了,我可以说当我问这个问题时,我没有完全理解react生命周期。现在我建议在react钩子中使用useffect钩子。这将允许您在定义的状态发生更改时更新状态/调用函数。