3
respostas

Alguem me ajuda por favor!

Estou a dois meses travado nesse codigo. Não sei o que estou fazendo errado.

Eu literalmente copiei e colei todo o código mas quando importo na pagina home o HomeScreen igual feito na aula, e recebo esse erro no terminal:

TypeError: Cannot read properties of undefined (reading 'focus') at Box (src\theme\components.jsx:50:16) 48 | export function Box({ 49 | as,

50 | styleSheet: { focus, hover, srOnly, ...styleSheet }, | ^ 51 | ...props 52 | }) {

Segue o repositório: https://github.com/ydroulis/cases-divulgacao

3 respostas

Bom dia!

Você já testou rodar o código do curso e vê se rola o mesmo erro? vou tentar testar aqui

Olha achei aqui uma solução.

o erro acontece por conta da linha:

styleSheet: { focus, hover, srOnly, ...styleSheet },

Isso só funciona se styleSheet estiver definido. E embora você tenha colocado um Box.defaultProps = { styleSheet: {} }, esse default não é aplicado no momento da desestruturação.

Como corrigir

Você pode corrigir de forma segura e sem afetar a lógica do componente com valor padrão na desestruturação da styleSheet:

Substitua:

export function Box({
  as,
  styleSheet: { focus, hover, srOnly, ...styleSheet },
  ...props
}) {

Por:

export function Box({
  as,
  styleSheet = {}, // valor padrão aqui
  ...props
}) {
  const { focus, hover, srOnly, ...restStyleSheet } = styleSheet;

E depois substitua styleSheet por restStyleSheet nas chamadas do renderCSS.

Por que isso funciona?

Porque styleSheet = {} garante que o objeto sempre vai existir — mesmo que undefined tenha sido passado. Assim, focus, hover, srOnly e o restante não quebram durante a desestruturação.

Código completo aqui nesse link pq ele tá muito grande https://www.invertexto.com/mbfh16

Ah lembrando que mudei dentro da pasta theme > components.jsx

Opa! Esse código no repositório é a copia do código do curso. Vou tentar a solução sugerida.