Настройка Math.random() в Expo

#react-native #expo #uuid

#react-native #expo #uuid

Вопрос:

Мне очень жаль, но я не продвигаюсь в этом. Работаю в expo с базовым списком покупок react native, и мне нужны UUID для товаров. Я использую Math.random ()

 const ID = Math.floor(Math.random() * 100);
 

и вот мой список элементов, требующих идентификаторов

 const [items, setItems] = useState([
        { id: ID, text: "Milk" },
        { id: ID, text: "Eggs" },
        { id: ID, text: "Butter" },
        { id: ID, text: "Veggies" },
    ]);
 

Я перепробовал все синтаксические комбинации, которые я могу придумать const ID , поэтому каждая ошибка не одинакова. Я предполагаю, что при каждом const ID вызове функция должна выполняться и должно быть возвращено другое число.

Извините, что беспокою всех, но буду признателен за любую помощь.

Я надеюсь, что это имеет смысл.

Спасибо

Ответ №1:

Скорее используйте функцию ID , чтобы она каждый раз генерировала разное число.

 const ID = () => Math.floor(Math.random() * 100);
 
 const [items, setItems] = useState([
        { id: ID(), text: "Milk" },
        { id: ID(), text: "Eggs" },
        { id: ID(), text: "Butter" },
        { id: ID(), text: "Veggies" },
    ]);
 

Комментарии:

1. Я попробовал эту конфигурацию, и вот что я получаю ‘код’ Идентификатор исключения компонента не является функцией (в ‘ID ()’, ‘ID’ равен 29) ‘код’

2. где вы определили ID функцию. можете ли вы предоставить больше кода компонента

3. export default function App() { const ID = Math.floor(Math.random() * 100); const [items, setItems] = useState([ { id: ID, text: "Milk" }, { id: ID, text: "Eggs" }, { id: ID, text: "Butter" }, { id: ID, text: "Veggies" }, ]); const deleteItem = (id) => { setItems((prevItems) => { return prevItems.filter((item) => item.id != id); }); }; return ( <View style={styles.container}> <Header /> <FlatList data={items} renderItem={({ item }) => ( <ListItem item={item} deleteItem={deleteItem} /> )} />

4. Я так и знал. определите ID функцию вне App функции.. поместить перед приложением

5. Я получаю key..it возвращает тот же ключ.