Две кнопки на основе щелчка, функция будет вызвана

#react-native

#react-native

Вопрос:

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

Комментарии:

1. Чего вам удалось достичь до сих пор?

2. Используйте useState крючок для цвета кнопки.

Ответ №1:

Конечный результат:

введите описание изображения здесь

Полный код:

 
const ButtonContainer = () => {
  const [btnOne, setBtnOne] = useState(false);
  const [btnTwo, setBtnTwo] = useState(false);
  const clickStyle = { backgroundColor: '#F5D9D0', borderColor: '#F3805E' }
  return (
    <View style={styles.buttonContainer}>
      <TouchableOpacity
        onPress={() => {
          setBtnOne(true);
          setBtnTwo(false);
        }}
        style={[
          styles.button,
          btnOne ? clickStyle : null,
        ]}>
        <Text>Unlimited Credit</Text>
      </TouchableOpacity>
      <TouchableOpacity
        onPress={() => {
          setBtnOne(false);
          setBtnTwo(true);
        }}
        style={[
          styles.button,
          btnTwo ? clickStyle : null,
        ]}>
        <Text>Limited Credit</Text>
      </TouchableOpacity>
    </View>
  );
};
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
  buttonContainer: {
    flexDirection: 'row',
    justifyContent: 'space-evenly',
  },
  button: {
    borderColor: 'grey',
    borderWidth: 2,
    padding: 10,
    borderRadius: 20,
  },
});
 

Живой рабочий пример: закуска на выставке

Ответ №2:

вот закуска, которую я создал: https://snack.expo.io/@yoobit0616/two-buttons

 import React, { useState } from 'react';
import { Text, View, StyleSheet } from 'react-native';
import { Button } from 'react-native-elements';
import Constants from 'expo-constants';

export default function App() {
  const [disabledButton, setDisabledButton] = useState(true);
  return (
    <View style={styles.container}>
      <View style={styles.buttonView}>
        <Button
          style={styles.button}
          onPress={() => setDisabledButton(!disabledButton)}
          buttonStyle={
            disabledButton
              ? { backgroundColor: 'white' }
              : { backgroundColor: 'red' }
          }
          titleStyle={{ color: 'black' }}
          title="Unlimited Credit"></Button>
        <Button
          style={styles.button}
          onPress={() => setDisabledButton(!disabledButton)}
          buttonStyle={
            !disabledButton
              ? { backgroundColor: 'white' }
              : { backgroundColor: 'red' }
          }
          titleStyle={{ color: 'black' }}
          title="Limited Credit"></Button>
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
    padding: 8,
  },
  buttonView: {
    flexDirection: 'row',
    justifyContent: 'center',
  },
  button: {
    height: 40,
    width: 150,
    marginLeft: 20,
    borderRadius: 5,
    borderWidth: 1,
  },
});