Никакая перегрузка не соответствует этой кнопке вызова Typescript on в React native

#javascript #typescript #react-native

Вопрос:

У меня есть мое Welcome.tsx досье:

 import React from 'react';
import {View, StyleSheet, Text, Button, TouchableOpacity} from 'react-native';
import Icon from 'react-native-vector-icons/Feather';

const WelcomeScreen: React.FC<{}> = () => {
  return (
    <View style={styles.container}>
      <View style={styles.logo}>
        <Icon size={150} color="black" name="book-open" />
        <Text style={styles.logoText}>Book Worm</Text>
      </View>
      <View style={styles.divider}>
        <TouchableOpacity>
          <Button title="Login" color="black" style={styles.btn} />
        </TouchableOpacity>
        <TouchableOpacity>
          <Button title="Sign-up" color="black" style={styles.btn} />
        </TouchableOpacity>
      </View>
    </View>
  );
};
const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  logo: {
    flex: 1,
    borderWidth: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  logoText: {
    fontSize: 50,
    fontWeight: '100',
  },
  divider: {
    flex: 1,
    borderWidth: 1,
  },
  btn: {
    borderWidth: 1,
    borderColor: 'black',
    backgroundColor: 'black',
  },
});
export default WelcomeScreen;
 

Как вы можете видеть, это довольно нормально. Однако код Visual Studio выделяет style свойство и выдает следующую ошибку:

 No overload matches this call.
  Overload 1 of 2, '(props: ButtonProps | Readonly<ButtonProps>): Button', gave the following error.
    Type '{ title: string; color: string; style: { borderWidth: number; borderColor: string; backgroundColor: string; }; }' is not assignable to type 'IntrinsicAttributes amp; 
 

Вот изображение:

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

Есть идеи, что вызывает эту перегрузку при вызове? пару раз я задавался вопросом, как это случилось.

Ответ №1:

Собственные кнопки React очень ограничены в возможностях, которые они предоставляют. React Native Button не имеет style свойств в своих документах. Смотрите здесь, вот почему вы получаете эту ошибку

Если вы хотите создать кнопку с пользовательскими стилями, используйте TouchableOpacity

Увидев ваш код, вы можете попробовать это

 <TouchableOpacity style={styles.btn}>
   <Text style={{ color: 'black' }}>Login</Text>
</TouchableOpacity>t