Pesquisa de site

reactjs - Tipos de spread só podem ser criados a partir de tipos de objeto


Eu tenho um componente simples em react-native usando ts que especifica seu próprio estilo, no entanto, eu também quero passar qualquer estilo que eu possa usar nele a partir de cima da árvore de componentes (ou seja, em algum lugar onde eu estou usando este componente)

class RatioImage extends React.Component<Props> {
  render() {
    const { width, ratio, style, ...props } = this.props;
    return (
      <Image
        {...props}
        style={{
          width: deviceWidth * (width / 100),
          height: deviceWidth * (width / 100) * ratio,
          ...style
        }}
      />
    );
  }
}

Atualmente estou recebendo o erro abaixo no meu ...style, não tenho certeza do porquê, já que deveria ser um objeto?

[ts] Spread types may only be created from object types.
const style: false | ImageStyle | (number & {
    __registeredStyleBrand: ImageStyle;
}) | RecursiveArray<false | ImageStyle | (number & {
    __registeredStyleBrand: ImageStyle;
}) | null | undefined> | null | undefined

Resposta #1

Você precisa usar uma sintaxe de array para fornecer múltiplos estilos no React Native

<Image style={[{ width: x, height; y}, style]} />

Veja os documentos para mais informações

Artigos relacionados