我正在为ororid开发一个应用程序,但是模拟器和智能手机之间会发生不同的事情。刷新FlatList时,它不遵守我强加的setTimout,因此无法正确刷新。
该应用显示/删除本地数据库(react-native-local-mongodb)usign redux中的图像。 我是“反应和ES6世界”中的新成员,然后我不知道很多正确的代码(例如Promises或async-await)。 我应该在减速器中做所有事情,但是失败了,然后我发明了这个奇怪的代码。
这是调用减速器的功能
using (IEnumerator<PXResult<MyTable>> enumerator = PXSelect<MyTable, Where<MyTable.inventoryID, Equal<Current<INItemSiteSummary.inventoryID>>, And<MyTable.siteID, Equal<Current<INItemSiteSummary.siteID>>>>>.SelectMultiBound(this, new object[] { itemsite }).GetEnumerator())
{
while (enumerator.MoveNext())
{
PXDatabase.Delete<MyTable>(new PXDataFieldRestrict[]
{
new PXDataFieldRestrict("InventoryID",itemsite.InventoryID),
new PXDataFieldRestrict("SiteID",itemsite.SiteID)
});
}
}
在减速器中删除数据库中的图像并设置新状态,然后在第1030ms后返回第一种方法从数据库刷新数据。
deleteImages=()=>{
Alert.alert(
'Alert',
'Are You sure to delete images?',
[
{text:'Yes, I am', onPress:()=>{
function start(){
setTimeout(del,1);
setTimeout(restoreDataFromDB,1000);
setTimeout(refState1,1500);
setTimeout(refState2,1550);
};
del=()=>{
//console.log('init_1');
this.props.onDeleteImages();
};
restoreDataFromDB=()=>{
//console.log('init_2.1');
let images=[];
db.loadDatabase(err=>{
db.find({_id:this.props.selectedPost},(erro,doc)=>{
doc.map((ele)=>{
ele.imagesStored.map(elem=>{
images.push(elem);
});
});
this.setState({imagesStored:images});
});
});
};
refState1=()=>{
//console.log('init_3');
this.setState({refreshing:true,isChecked:false});
};
refState2=()=>{
// //console.log('init_4');
this.setState({refreshing:false});
this.componentDidMount();
};
try{
start();
}catch(err){
// //console.log('err: '+err);
}}
},
{text:'No I`m not',onPress:()=>{},style:'cancel'}
]);
};
我的仿真器可以正常工作(保存/删除/显示图像),但是在智能手机中却不能删除图像。