任何人都知道为什么我有这个错误:未定义不是一个对象(评估'messages.filter')



为什么我得到以下错误

undefined is not an object(evaluating 'messages.filter')

使用以下代码?

import React,{useState} from 'react';
import { FlatList, StyleSheet, View } from 'react-native'
import ListItem from './../components/ListItem';
import ListItemSeparator from './../components/ListItemSeparator';
import ListItemDeleteAction from './../components/ListItemDeleteAction';

const initialMessages =[
{id:1 ,userName:"Anna",description:"An awesome girl"},
{id:2 ,userName:"Lucy",description:"A best people"},
{id:3 ,userName:"Jack",description:"Very good guy"}
]


function MessagesScreen(props) {
const[messages,setMessages] = useState(initialMessages);


const handleDelete = message =>{
const newMessages = messages.filter(m => m.id !== message.id);
setMessages(newMessages);
}
return (
<View>
<FlatList
data ={initialMessages}
keyExtractor = {message => message.id.toString()}
renderItem ={({item})=>(
<ListItem
image = {require('../assets/me.jpg')}
title = {item.userName}
subTitle ={item.description}
onPress ={()=>console.log(item)}
renderRightActions ={()=>(
<ListItemDeleteAction onPress={()=>handleDelete(item)}/>
)}
/>
)}
ItemSeparatorComponent ={ListItemSeparator}
/> 
</View>
);
}

const styles = StyleSheet.create({

})

export default MessagesScreen;

您在handleDelete中给出了错误的元素。

renderItem中的参数"item"是"initialMessages"的元素,而不是数组。

undefined不是对象(正在评估"messages.filter"(

此错误意味着您正试图对json调用filter((。此函数不存在,因此未定义。

试试这个代码。

<ListItemDeleteAction onPress={()=>handleDelete(messages)}/>

相关内容

最新更新