如何在 React Native 中对特定按钮应用不同的样式

How to apply different styles to specific button in react native

我在一张图像上应用了不同的滤镜叠加层。我想根据用户按下的按钮应用特定的样式。我怎样才能做到这一点?

现在我正在使用三元条件,但它只适用于一种样式

       <Image
          source={{
            uri: source,
          }}
          style={styles.filterImage}
          resizeMode="contain"
        />
        <View
          style={
           filter1 ? styles.filterOverlay1 : styles.defaultFilterOverlay
          }

我为不同的滤镜叠加制作了多个状态

  const [filter1, setFilter1] = useState(false);
  const [filter2, setFilter2] = useState(false);
  const [filter3, setFilter3] = useState(false);
  const [filter4, setFilter4] = useState(false);
  const [filter5, setFilter5] = useState(false);
  const [filter6, setFilter6] = useState(false);
  const [filter7, setFilter7] = useState(false);

当用户按下按钮时,它会将状态设置为 true


           <TouchableOpacity
              style={styles.filterTags}
              onPress={() => setFilter1(true)}
            >
              <Text style={{ color: "#fff", fontWeight: "bold" }}>
                Filter 1
              </Text>
            </TouchableOpacity>
            <TouchableOpacity
              style={styles.filterTags}
              onPress={() => setFilter2(true)}
            >
              <Text style={{ color: "#fff", fontWeight: "bold" }}>
                Filter 2
              </Text>
            </TouchableOpacity>
            <TouchableOpacity
              style={styles.filterTags}
              onPress={() => setFilter3(true)}
            >
              <Text style={{ color: "#fff", fontWeight: "bold" }}>
                Filter 3
              </Text>
            </TouchableOpacity>

你可以像这样使用三元条件

style={
       filter1 ? styles.filterOverlay1 : filter2 ? styles.filterOverlay2 :  filter3 ? styles.filterOverlay3 : filter4 ? styles.filterOverlay4 :styles.defaultFilterOverlay
      }

或者您可以使用这样的过滤器

const [selectedFilter, setSelectedFilter] = useState(styles.defaultFilterOverlay);

在 TouchableOpacity 按下时

<TouchableOpacity
          style={styles.filterTags}
          onPress={() => setSelectedFilter(styles.filterOverlay1)}
        >

并设置所选过滤器

 style={ selectedFilter  }