Я работаю над собственным приложением реагирования, где для некоторых целей использую FlatList
. У меня есть список предметов, отображаемых через FlatList
. Этот FlatList возвращает компонент, который я сделал, и наконец отображает элементы.
const [allAmen , setAllAmen] = useState({});
let arr = [];
const test = (uName) => {
setAllAmen({...allAmen , "name" : uName })
}
arr.push(allAmen);
console.log(arr);
<FlatList
data={amens}
keyExtractor={(amen) => amen.id}
renderItem={({item}) => {
<TouchableOpacity
onPress={() => {
test(item.name)
}}
>
<Text>{item.name}</Text>
</TouchableOpacity>
}}
/>
Когда я запускаю это и нажимаю на один из пунктов списка, он устанавливает объект в allAmen и вставляет в обр. Но если я нажимаю на другой элемент, он создает новый массив и дает результат. S0 для каждого элемента плоского списка создается новый объект состояния и массив, и результат помещается в отдельный массив для каждого элемента. Поэтому, если у меня есть следующее:
Flatlist ->
Candy Bar White Chocolate Bar Red Velvet
, и я нажимаю сначала, я получаю -> [{"name": Candy Bar}]
, но затем, если Я нажимаю на Белую плитку шоколада, которую она дает, [{"name" : White Chocolate Bar }]
и то же самое для Красного Бархата.
То, что я хочу, это если я сначала нажму, то получу -> [{"name": Candy Bar}], затем, если я нажму второй, а после этого третий -> [{"name" : Candy Bar} , {"name" : White Chocolate Bar}, { "name" : Red Velvet}]
.
Но он работает индивидуально для каждого списка. Может кто-нибудь помочь мне, как это сделать? Я довольно новичок, чтобы отреагировать на родную и javascript и запустить его на много сомнений. Пытался найти его в StackOverflow и inte rnet, но не смог найти ничего релевантного.