简体   繁体   English

如何在本机反应中将不同的 styles 应用于特定按钮

[英]How to apply different styles to specific button in react native

I have an image on which I'm applying different filter overlays.我有一张图像,我在上面应用了不同的过滤器覆盖。 I want to apply specific styling based on the button pressed by the user.我想根据用户按下的按钮应用特定的样式。 How can I achieve this?我怎样才能做到这一点?

Right now I'm using ternary condition but its just applying for one styling现在我正在使用三元条件,但它只是申请一种样式

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

I have made multiple states for different filter overlays我为不同的过滤器覆盖做了多个状态

  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);

When the user is pressing on a button its setting the state to true当用户按下按钮时,将 state 设置为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>

you can use a ternary condition like this你可以使用这样的三元条件

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

or you can use filters like this或者你可以使用这样的过滤器

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

on TouchableOpacity press在 TouchableOpacity 按下

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

and set the selected filter并设置选定的过滤器

 style={ selectedFilter  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM