React本机setState

问题描述:

我想改变我的状态从渲染功能,但它不工作。React本机setState

render() { 
    return (
     <View> 
      // some code 

      {this._renderModal()} 
     </View> 
    ) 
} 

_renderModal() { 
     let channel = this.props.pusher.subscribe('my-channel'); 
     channel.bind('my-event', data => { 
      this.setState({ 
       requestedToEnter: false 
      }); 
      this.props.navigation.getNavigator('root').push(Router.getRoute('order', { restaurant_id })); 
     }); 

     return (
      <Modal 
       animationType={'slide'} 
       transparent={false} 
       visible={this.state.requestedToEnter} 
       onRequestClose={this._handleEnter}> 

       // some components 
      </Modal> 
     ) 
} 

当我收到我的事件我的路它激发是绑定到它的功能。 setState方法不会更改状态(或者它不会重新呈现组件)。我认为这是因为我在事件功能中使用了setState方法。当我从推送器收到事件时,如何关闭Modal

这是一个很糟糕的做法,因为每次调用setState时,都会在render()中调用this.setState函数,组件将使用更新后的状态值来绑定到组件/子组件。

或者,你可以创建变量

this.state = { 
    isModalOpen: true 
} 

的状态,并且把你的推杆事件侦听componentDidMount()和更新您的状态变量值的回调。然后,用状态变量控制模态分量的可见性:

<Modal 
    animationType={'slide'} 
    transparent={false} 
    visible={this.state.isModalOpen}></Modal>