REACT NATIVE Как я могу выделить элемент с помощью прокрутки и увеличить/уменьшить выделенный элемент?

Я создаю «Отслеживание инициатив» для домашнего использования. Моя цель состоит в том, чтобы по умолчанию выделить первый элемент в верхней части списка и использовать счетчик, который отслеживает ходы, чтобы выделить элемент, соответствующий его ходу. Например. При нажатии кнопки «+» следующий элемент должен быть выделен, а предыдущий элемент должен вернуться в нормальное состояние. В настоящее время я использую функцию карты для отображения массива. Я чувствую, что должен быть способ использовать индекс и стиль для достижения того, чего я хочу, но пока мне не повезло.

Заранее спасибо за любую помощь или предложения!

связанный код ниже:

let Encounter1Array = [
  { name: "goblin1", init: 5 },
  { name: "goblin2", init: 8 },
  { name: "goblin3", init: 15 },
  { name: "goblin4", init: 3 },
  { name: "goblin5", init: 9 },
];

function InitiativeTrackerScreen() {
  const [encounter, setEncounter] = useState(Encounter1Array);
  encounter.sort(function (x, y) {
    return y.init - x.init;
  });
  return (
    <KeyboardAvoidingView style = {styles.wrapper}>
      <ScrollView>
        {encounter.map((item, index) => {
          return (
            <View key = {index}>
              <TouchableOpacity style = {styles.ItemDisplayContainer}>
                <View>
                  <View>
                    <Text style = {{ fontStyle: "italic", fontSize: 16 }}>
                      {item.name}
                    </Text>
                  </View>
                  <View>
                    <Text style = {{ fontSize: 12 }}>
                      Initiative: {item.init}
                    </Text>
                  </View>
                </View>
              </TouchableOpacity>
            </View>
          );
        })}
      </ScrollView>
    </KeyboardAvoidingView>
  );
}

Если я добавлю «const [increment, setIncrement] = useState (1);» или что-то в этом роде, я думаю, что я должен иметь возможность настроить эту переменную с помощью кнопки увеличения/уменьшения, но я не уверен, как использовать этот хук для изменения стиля элемента в массиве, который соответствует приращению поворота .

Derek Smith 21.03.2022 16:18
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
1
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно дополнительное состояние, чтобы отслеживать индекс элемента, который вы хотите выделить. Затем вы можете использовать условный оператор для соответствия правому индексу и переключить его стиль.

const P = ({ list }) => {
  const [current, setCurrent] = useState(0);

  return list.map((item, i) => 
    <View style = {i === current ? highlightStyle : style}>
      <Button onPress = {() => setCurrent(current + 1)}>
        {"+"}
      </Button>
      {item}
    </View>
  );
};

Спасибо. Этого было достаточно, чтобы уйти. У меня еще нет представителя, чтобы проголосовать, иначе я бы!

Derek Smith 21.03.2022 21:22

Другие вопросы по теме