代码之家  ›  专栏  ›  技术社区  ›  Anastasios3

当我在React Native中按下时,如何使按钮变色?

  •  0
  • Anastasios3  · 技术社区  · 2 年前

    我的纽扣颜色不变。这是我的代码:

    import React from 'react';
    import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
    
    const MyButton = () => {
      const [isPressed, setIsPressed] = React.useState(false);
    
      const handlePressIn = () => {
        setIsPressed(true);
      };
    
      const handlePressOut = () => {
        setIsPressed(false);
      };
    
      return (
        <TouchableOpacity
          onPressIn={handlePressIn}
          onPressOut={handlePressOut}
          style={[styles.button, isPressed && styles.buttonPressed]}
        >
          <Text style={styles.buttonText}>Press Me</Text>
        </TouchableOpacity>
      );
    };
    
    const styles = StyleSheet.create({
      button: {
        backgroundColor: 'blue',
        padding: 10,
        borderRadius: 5,
      },
      buttonPressed: {
        backgroundColor: 'red',
      },
      buttonText: {
        color: 'white',
        fontSize: 16,
      },
    });
    
    export default MyButton;
    

    我做错了什么?按钮不变色。需要帮助。非常感谢。您的文本

    按下按钮时我试着改变颜色。预计按钮变红,但保持蓝色。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Jojo Narte    2 年前

    我认为本质上,使用 TouchableOpacity 解决这个问题会很棘手,所以我不建议在这种情况下使用它,因为它已经有了自己的行为来处理触摸反馈。您要查找的内容如下所示,但使用的是react native Pressable 组件,它很简单:

    <Pressable
      style={({pressed}) => [
        styles.button,
        {
          backgroundColor: pressed ? 'red' : 'blue',
        },
        styles.wrapperCustom,
      ]}
    >
      <Text style={styles.buttonText}>Press Me</Text>
    </Pressable>