如何找到本地而不是全局?

时间:2016-10-11 20:31:26

标签: firebase react-native firebase-realtime-database

我对React Native和这些应用程序的整个流程都很陌生,所以很抱歉,如果这是显而易见的事情。 : - )

好的,所以我创建了一个包含此代码的组件:

constructor(props) {
  super(props);
  this.state = {isLoading: true}; //this = object
}

componentWillMount() {
  var currentBusiness = firebase.database().ref("business/" + this.props.business)
  currentBusiness.on('value', function(snapshot) {
    currentBusinessData = snapshot.val()
    this.setState = ({isLoading: false}) //this = globalobject
  });
}

在我的渲染函数中,我想在加载数据时使用this.state.isLoading来触发新视图,但是,问题出在被调用的函数中,当返回数据时,这指的是 globalobject ,我假设是因为firebase.database是在全局级别启动的,但我如何在本地组件级别调用setState ,以便触发新的渲染?

1 个答案:

答案 0 :(得分:1)

我更喜欢这种方法

const self = this
currentBusiness.on('value', function(snapshot) {
    currentBusinessData = snapshot.val()
    self.setState({isLoading: false}) 
});

箭头功能为你找到了正确的“这个”。

或者,经典的“自我”或“那个”变量也应该起作用。

JSON.parse()

btw,this.setState是一个函数,它将触发重新渲染。