为什么我得到以下错误
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)}/>