Создать единый массив состояний для всех элементов плоского списка. (Реагируй Родной) - PullRequest
2 голосов
/ 17 апреля 2020

Я работаю над собственным приложением реагирования, где для некоторых целей использую 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, но не смог найти ничего релевантного.

1 Ответ

1 голос
/ 17 апреля 2020
const newValue = {"name" : uName};
setAllAmen(prevArray => [...prevArray, newValue])

См. Больше объяснений. { ссылка } { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...