Я работаю над этим проектом React Native в целях самообучения.Каждый раз, когда я нажимаю кнопку отправки, я бы хотел, чтобы значение id автоматически увеличивалось.Например, если идентификатор последнего отправленного элемента был 7, я хочу, чтобы новый идентификатор был 8. Я подумал, что если я смогу найти самое высокое значение в строке идентификаторов, то я могу добавить к нему 1 и создать новый идентификатор для нового отправленного элемента.вещь.Я оглянулся и нашел решение, подобное этому:
handleAddToList = () => {
let items = [...this.state.items];
let lastId = Math.max.apply(null, items.id);
let newId = lastId + 1;
items.filter(i => i.title == this.state.text).length === 1
? alert("This item is on the list already.")
: items.push({
id: newId,
title: this.state.text,
found: 0,
value: 0,
icon: "delete"
});
this.setState({ items: items });
};
И вот моя маленькая форма, в которой я отправляю текст:
<Input
placeholder="Start typing"
label={"Your next shop list item..."}
onChangeText={text => this.setState({ text })}
/>
<Button title="Add to list" onPress={() => this.handleAddToList()} />
Моя функция фактически добавляет элемент дляв первый раз, но когда я добавляю новый элемент, я получаю следующее предупреждение:
Warning: Encountered with two children with the same key, '"-infinity"'.
И вот как я перечисляю свои элементы:
<ListItem
key={l.id}
title={l.title}
rightIcon={{ name: l.icon, color: "#cc0033" }}
bottomDivider={true}
/>
Это означает, что lastId и newIdчасти моего кода не работают должным образом.
Буду признателен за помощь в увеличении моего идентификатора с каждым новым отправленным элементом.