我在iOS原生开发方面有经验,现在我正在尝试使用react-native构建我的第一个应用程序。
当我从firebase数据库接收数据时,我正在尝试setSate:
state = {
remainingSeconds: 5,
dataArray: [],
};
componentDidMount() {
// Get data from firebase
this.getData();
}
getData() {
// Set the configuration for your app
var config = {
apiKey: "XXXXXX",
authDomain: "XXXXXXX",
databaseURL: "XXXXXXX",
storageBucket: ""
};
firebase.initializeApp(config);
// Get a reference to the database service
var database = firebase.database();
// Get data
var usersRef = firebase.database().ref('Users');
usersRef.on('value', function(snapshot) {
this.setState({
dataArray: snapshot.val()
})
});
};
我收到以下错误:
任何人都可以提供帮助吗?
先谢谢你。
答案 0 :(得分:3)
看起来问题是您调用setState
的回调函数与父函数的上下文不同。
您需要做的就是将回调函数从标准函数声明转换为箭头函数。
// Get data
var usersRef = firebase.database().ref('Users');
usersRef.on('value', (snapshot) => {
this.setState({
dataArray: snapshot.val()
})
});
这应该为您提供正确的上下文,以便this
在回调函数中与在父函数中的含义相同。
答案 1 :(得分:0)
我相信你已经失去了对这个'这个'因为范围。
不是最漂亮的解决方案,但我希望这可能有所帮助:
var expression = new Action<DataSourceSortDescriptorFactory<TModel>>(x =>
{
foreach (var sort in sorts)
{
if (sort.SortDirection == System.ComponentModel.ListSortDirection.Ascending)
{
x.Add(sort.Member).Ascending();
}
else
{
x.Add(sort.Member).Descending();
}
}
});