开发者问题收集

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