Flow with Rest Object в функциональном компоненте - PullRequest
0 голосов
/ 07 января 2020

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

Дело в том, что я получаю 2 ошибки потока:

  • Невозможно создать элемент TouchableOpacity, поскольку неточные реквизиты [1] несовместимы с точными реквизитами [2].
  • Невозможно получить props.style, поскольку стиль свойства отсутствует в остальной части шаблона объекта [1] .

Вот мой код:

type Props = {
  text: string,
  textColor: string,
  backgroundColor: string,
  handleClick: () => void,
};

const Button = ({
  textId,
  textColor,
  backgroundColor,
  handleClick,
  ...props
}: Props) => {
  const {t} = useTranslation();

  const styles = {
    button: {
      padding: 10,
      backgroundColor: backgroundColor,
    },
    text: {
      color: textColor,
      textAlign: 'center',
      fontWeight: 'bold',
    },
  };

  return (
    <TouchableOpacity
      {...props}
      style={[styles.button, props.style]}
      onPress={handleClick}>
      <Text style={styles.text}>{t(textId)}</Text>
    </TouchableOpacity>
  );
};

Как мне правильно набрать мой объект отдыха ... реквизиты?

Спасибо.

1 Ответ

0 голосов
/ 07 января 2020

Точный тип можно сделать, выполнив следующие действия:

type Props =  $Exact<{
  text: string,
  textColor: string,
  backgroundColor: string,
  handleClick: () => void,
}>;

Это должно решить вашу первую ошибку.

Что касается второй ошибки, я думаю добавить style в качестве записи в вашем Props типе должно решить это.

...