1
resposta

[Ajuda] Mensagem de erro estourando no Browser por conta da propriedade styleSheet

Por algum motivo o browser está estourando esse Warning que mais tarde parece me gerar mais problemas: ** client.js:1 Warning: React does not recognize the styleSheet prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase stylesheet instead. If you accidentally passed it from a parent component, remove it from the DOM element.**

Código:

import React from "react";
import styled from "styled-components";
import { StyleSheet } from '@src/theme/StyleSheet';
import { parseStyleSheet } from "@skynexui/responsive_stylesheet";

interface StyledBaseComponent {
  styleSheet?: StyleSheet;
}

const StyledBaseComponent = styled.div<StyledBaseComponent>`
  ${({ styleSheet }) => parseStyleSheet(styleSheet)}
`;

export const BaseComponent = (props) => {
  return (
    <StyledBaseComponent {...props} />
  )
}
BaseComponent.defaultProps = {
  styleSheet: {},
}
import { BaseComponent } from "@src/theme/BaseComponent";
import { StyleSheet } from "@src/theme/StyleSheet";
import React from "react"; 

interface BoxProps {
  tag: any;
  children: React.ReactNode;
  styleSheet: StyleSheet;
}

export default function Box({ styleSheet, children, tag }: BoxProps) {
  const Tag = tag || 'div';
  return (
    <BaseComponent as={Tag} styleSheet={styleSheet}>
      {children}
    </BaseComponent>
  )
}

Tentei solucionar de todas as formas e até mesmo segui o passo a passo das aulas, mas não consegui solucionar esse problema, agradeço a ajuda.

1 resposta

Olá, Thiago!

Pelo que pude entender, você está tentando passar a propriedade styleSheet para o seu componente BaseComponent e isso está gerando um aviso no console, certo?

O aviso que você está recebendo é porque o React não reconhece a propriedade styleSheet como uma propriedade válida para um elemento DOM. Isso acontece porque você está passando a propriedade styleSheet diretamente para o seu componente StyledBaseComponent, que é renderizado como uma div.

Para resolver esse problema, você pode fazer uma desestruturação das props no seu componente BaseComponent para separar a propriedade styleSheet das outras props. Assim, você evita passar a propriedade styleSheet diretamente para o componente StyledBaseComponent.

Vou te mostrar um exemplo de como fazer isso:

export const BaseComponent = ({ styleSheet, ...otherProps }) => {
  return (
    <StyledBaseComponent styleSheet={styleSheet} {...otherProps} />
  )
}

Neste exemplo, estou usando a sintaxe de desestruturação do JavaScript para separar a propriedade styleSheet das outras props. Assim, quando eu passo {...otherProps} para StyledBaseComponent, estou passando todas as props, exceto styleSheet.

Espero ter ajudado e bons estudos!