TypeError:在 React Native 上,undefined 不是对象(评估“item.id.toString”)
2022-08-03
2596
我一直遇到此错误。我还检查了其他与此类似的相关问题,但仍然不起作用。
这是我的代码:
Create.js
const create = ({navigation, user}) => {
const [newcreate, setNewcreate] = useState([]);
const findNewcreate = async () => {
const results = await AsyncStorage.getItem('newcreate');
if (results !== null) setNewcreate(JSON.parse(results));
}
useEffect(() => {
findNewcreate();
}, []);
const toClose = () => setVisible(false);
const toSubmit = async (createName, createCode) => {
const creates = {id: Date.now(), createName, createCode};
const updatedCreate = [...newcreate, creates];
setNewcreate(updatedCreate)
await AsyncStorage.setItem('newcreate', JSON.stringify(updatedCreate))
};
const submitDetails = () => {
if (!createName.trim() && !createCode.trim()) return toClose();
toSubmit(createName, createCode);
setCreateName("");
setCreateCode("");
toClose();
};
return (
<FlatList
data={newcreate}
keyExtractor={(item) => item.id.toString()}
renderItem={({item}) => <AdddedItems item={item} />} />
)
AddedItems.js
const AdddedItems = ({item}) => {
const {createName, createCode} = item;
return (
<View>
<Text>{createName}</Text>
<Text>{createCode}</Text>
</View>
)
}
顺便说一句,我尝试删除 keyExtractor 中的 .id,它看起来像这样: keyExtractor={(item) => item.toString()},它部分有效。但我不想删除 id 我刚刚试过了。删除 id 可以吗?它仍然会生成另一个与此无关的错误。
提前谢谢您!!
2个回答
请对任何平面列表尝试此方法。无论您是否获取数据,这都有效。
<FlatList
data={newcreate}
keyExtractor={(_,i) => i.toString()}
renderItem={({item}) => <AdddedItems item={item} />} />
ronak dholariya
2022-08-19
尝试在项目后添加问号,如下所示:
<FlatList
data={newcreate}
keyExtractor={(item) => item?.id.toString()}
renderItem={({item}) => <AdddedItems item={item} />} />
Alija Fajic
2022-08-03