我对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
,以便触发新的渲染?
答案 0 :(得分:1)
我更喜欢这种方法
const self = this
currentBusiness.on('value', function(snapshot) {
currentBusinessData = snapshot.val()
self.setState({isLoading: false})
});
箭头功能为你找到了正确的“这个”。
或者,经典的“自我”或“那个”变量也应该起作用。
JSON.parse()
btw,this.setState是一个函数,它将触发重新渲染。