Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';尽管使用extraData-React Native,但在删除最后一项后不要重新呈现平面列表_Javascript_Reactjs_React Native_Firebase Realtime Database_React Native Flatlist - Fatal编程技术网

Javascript Can';尽管使用extraData-React Native,但在删除最后一项后不要重新呈现平面列表

Javascript Can';尽管使用extraData-React Native,但在删除最后一项后不要重新呈现平面列表,javascript,reactjs,react-native,firebase-realtime-database,react-native-flatlist,Javascript,Reactjs,React Native,Firebase Realtime Database,React Native Flatlist,我试图重新渲染平面列表,但无法再更新 我从实时数据库获取数据,并作为数据道具传递给Flatlist, 写一个函数从列表和数据库中删除一个项目,效果很好,但是当我删除列表中的最后一个项目时,我看不到空屏幕的“列表”,只保存我删除的最后一个项目,尽管它在数据库中删除了 代码 import React,{Component}来自'React'; 从“react native”导入{View、Text、StyleSheet、FlatList、ScrollView、TouchableOpacity}; 从

我试图重新渲染平面列表,但无法再更新

我从实时数据库获取数据,并作为数据道具传递给Flatlist, 写一个函数从列表和数据库中删除一个项目,效果很好,但是当我删除列表中的最后一个项目时,我看不到空屏幕的“列表”,只保存我删除的最后一个项目,尽管它在数据库中删除了

代码
import React,{Component}来自'React';
从“react native”导入{View、Text、StyleSheet、FlatList、ScrollView、TouchableOpacity};
从“react native firebase”导入firebase;
从“反应本机矢量图标/离子图标”导入图标;
类UserFavorites扩展组件{
建造师(道具){
超级(道具);
此.state={
当前用户:null,
收藏夹:[],
}
}
componentDidMount(){
const currentUser=firebase.auth().currentUser.uid;
this.setState({currentUser});
const favorites=firebase.database().ref(`favorites/${currentUser}`);
收藏夹.on(“值”,(快照)=>{
让收藏夹=[]
snapshot.forEach((childSnapshot)=>{
推({
ProviderId:childSnapshot.val().ProviderId,
providerName:childSnapshot.val().providerName,
providerService:childSnapshot.val().providerService,
});
this.setState({favorites})
});
});
}
_ListMPtyComponent=()=>{
返回(
未找到收藏夹提供程序:O
)
}
render(){
const{fav}=this.state;
返回(
{
返回(
{item.providerName}
{item.providerService}
{
const currentUser=firebase.auth().currentUser.uid;
firebase.database().ref(`favorites/${currentUser}/${item.ProviderId}`).remove()。然后(()=>alert(“Removed”))
}}
/>
)
}
}
keyExtractor={(项,索引)=>index.toString()}
/>
);
}
}
const styles=StyleSheet.create({
容器:{
弹性:1,
},
});
导出默认用户收藏夹;

您正在从firebase中删除该项目,但不是从flatlist的数据源中删除该项目
此.state.favorites
,添加一个从firebase中删除该项目后将调用的函数

_onRemove = (_item) => { 

   this.setState({ 
     favorites: this.state.favorites.filter(item => item.ProviderId !== _item.ProviderId) 
   });
}
将要删除的项传递给平面列表中的函数

renderItem={({ item }) => {
  return ....
   //scrollview code
   <Icon style={{ marginRight: 20 }}
    name={`ios-heart${fav ? "" : "-empty"}`}
    size={35} color="#f00"
    onPress={() => {
       const currentUser = firebase.auth().currentUser.uid;
       ....
       // firebase code
       this._onRemove(item);
    }
   />
  ....
  //rest of the code
}}
renderItem={({item})=>{
返回。。。。
//滚动视图代码
{
const currentUser=firebase.auth().currentUser.uid;
....
//火基代码
此项删除(项目);
}
/>
....
//代码的其余部分
}}

我认为您只是从firebase中删除,而不是从
收藏夹中删除。但其他项目被删除,我看到它消失在图标按下功能中,请尝试更新this.state.favorites。这是FlatList用于其数据的内容,因此这是需要在您希望看到添加/删除行时随时更新的数组。@RichardMcCluskey用什么更新?this.setStat({favorites:?})@朱尼奥斯。当我使用filter()删除其中一个项目时,所有列表都已删除。如何处理此问题以删除我所按的内容<代码>\u onRemove=(\u item)=>{this.setState({favorites:this.state.favorites.filter(item=>item.id====\u item)});console.log(this.state.favorites)}
@JunisL。再说一遍,如果你有时间,你能检查一下这个答案吗?
renderItem={({ item }) => {
  return ....
   //scrollview code
   <Icon style={{ marginRight: 20 }}
    name={`ios-heart${fav ? "" : "-empty"}`}
    size={35} color="#f00"
    onPress={() => {
       const currentUser = firebase.auth().currentUser.uid;
       ....
       // firebase code
       this._onRemove(item);
    }
   />
  ....
  //rest of the code
}}