如何在 React Native 中选择一个按钮,而不选择其他按钮?

Posted

技术标签:

【中文标题】如何在 React Native 中选择一个按钮,而不选择其他按钮?【英文标题】:How to select a button in React Native, without selecting others? 【发布时间】:2021-05-31 02:07:18 【问题描述】:

我有一个简单的测验应用程序,它总是有相同的答案,每个答案都有不同的分数。

当 USER 按下时,我希望选择按钮,更改颜色,将 id 传递给状态。 当 USER 按下另一个按钮时,我想取消选择第一个按钮并选择它。

使用 React 函数式组件、ReactHooks、样式化组件和 TypeScript。

按钮:

<AnswerButton
  id="1"
  isSelected=isSelected
  style=shadow
  onPress=handleAnswer
>
  <AnswerText>Muito Correto</AnswerText>
</AnswerButton>


 <AnswerButton
      id="2"
      style=shadow
      isSelected=isSelected
      onPress=handleAnswer
    >
      <AnswerText>Moderadamente Correto</AnswerText>
    </AnswerButton>

样式化组件:

    export const AnswerButton = styled.TouchableOpacity<AnswerProps>
  background: $darken(0.05, #EEEDED);
  border-radius: 35px;
  padding: 15px;
  margin-bottom: 25px;

  border: 2px solid #64007b;

  $props =>
    props.isSelected &&
    css
      border-color: #c53030;
      background-color: #fff8f7;
      border-width: 2px;
    
;

export const AnswerText = styled.Text
  color: #64007b;
  font-family: 'RobotoSlab-Medium';
  font-size: 18px;
  line-height: 30px;

  text-align: center;
;

【问题讨论】:

【参考方案1】:

您可以通过添加包含所选按钮 id 的状态来实现此目的

const [selectedButton, setSelectedButton] = useState(0)

const handleAnswer = (id) => 
   setSelectedButton(id)


return (
    <AnswerButton
       id="1"
       isSelected=selectedButton === "1"
       style=shadow
       onPress=() => handleAnswer("1")
    />
)

【讨论】:

以上是关于如何在 React Native 中选择一个按钮,而不选择其他按钮?的主要内容,如果未能解决你的问题,请参考以下文章

React Native:按下“下一个”键盘按钮后如何选择下一个TextInput?

在 react native 中选择图片

如何在react-native中的多行文本中断后确定“更多”链接/按钮的位置

如何在 React Native 中添加按钮网格样式?

单击后如何在 React Native 中禁用按钮

如何使用 react-native-firebase 在 iOS 设备的推送通知中添加按钮?