2
respostas

Problema com as novas props: completado, selecionado e id

Fiz as configurações descritas na aula, a primeira parte de "resetar" os campos foi um sucesso, o meu problema aconteceu ao inserir as novas props: completado, selecionado e id. Depois de fazer todos os procedimentos nenhum erro ou problema foi apresentado no console do VSCode, indo para o navegador e fazendo o processo de adicionar uma nova tarefa tudo parece normal, ao analisar o console a nova tarefa é apresentado com as 5 propriedades que a ele pertence só que nas props completado, selecionado e id mostra o valor undefined. Segue abaixo os meus trechos de código:

lista/item/index.jsx

import style from '../Lista.module.scss'
import {ITarefa} from '../../../types/tarefa'

export default function item({tarefa, tempo, selecionado, completado, id}: ITarefa) {
  console.log("Item atual: ", {tarefa, tempo, selecionado, completado, id})
  return (
    <li className={style.item}>
      <h3>{tarefa}</h3>
      <span>{tempo}</span>
    </li>
  );
}

formulario/index.jsx

class Formulario extends React.Component<{
  setTarefas: React.Dispatch<React.SetStateAction<ITarefa[]>>
}> {
  state = {
    tarefa: "",
    tempo: "00:00",
  };

  adicionarTarefa(evento: React.FormEvent<HTMLFormElement>) {
    evento.preventDefault();
    this.props.setTarefas((tarefasAntigas) => [
      ...tarefasAntigas,
      {
        ...this.state,
        selecionado: false,
        completado: false,
        id: uuidv4npm(),
      },
    ]);
    this.setState({
      tarefa: "",
      tempo: "00:00",
    });
    //console.log('state: ', this.state);
  }

type/tarefa.js

export interface ITarefa {
tarefa: string,
tempo: string,
selecionado: boolean,
completado: boolean,
id: string
}

pages/App.jsx

import React, { useState } from 'react';
import { Cronometro } from '../components/Cronometro';
import Formulario from '../components/Formulario';
import Lista from '../components/Lista';
import style from './App.module.scss';
import {ITarefa} from '../types/tarefa';

function App() {
  const [tarefas, setTarefas] = useState ([]);
  return (
    <div className={style.AppStyle}>
      <Formulario setTarefas= {setTarefas} />
      <Lista tarefas= { tarefas } />
      <Cronometro />
    </div>
  );
}

export default App;
2 respostas

Fala Daniel, beleza?

O item estando dentro da Lista não tem como ver se props foram passados pra ele, mas verifique algumas coisas:

  1. se esses valores estão sendo atualizados no estado
  2. se esses valores estão sendo passados via props para o componente (<Item selecionado={selecionado} completado={completado} id={id} ... />)
  3. caso estejam, verifique dentro do map que renderiza esses itens se o selecionado/completado dentro desse map tem algum valor:
     {tarefas.map(item => { // aqui coloque uma chave ao invés de um parêntese pois a gente precisa ver aqui o valor das variáveis
         console.log(item) // aqui você consegue ver o valor de item, e nele tem que ter as variáveis corretas
         return ( // o map precisa de um return
             <Item ... />
         )
     })}
    OBS: Mude o nome do seu componente de item para Item, todo componente React precisa começar com a letra maiúscula.

Caso isso não resolva, você consegue subir o código no Github e mandar aqui para que seja mais fácil te ajudar?

Bons estudos!

Olá, Professor Luiz. Tudo bem e com você?

Quanto ao nome do arquivos, todo meus componentes começam com letra maiúscula, eu só não deixei com letra maiúscula no fórum por desatenção, eu só quis distinguir os códigos com base nos nomes dos arquivos e não me atentei a esse detalhe.

Quanto ao código, eu estava seguindo fielmente a implementação feita em aula, só que nesse ponto o meu resultado não bateu. Então prossegui mais um pouco até as aulas que fazem atualizar esses valores de estado e também não está indo. O que me me deixa sem reação é que não aparece nenhuma mensagem de erro. Acredito que talvez seja por eu estar usando javascript, quando fui instalar o React ele não me deu a opção de deixar em tp. Se você puder dar uma olhada no meu código no git eu agradeceria. Segue abaixo o link. Obrigado pela atenção.

https://github.com/LeoHayashida/CursoAlura-Alura-studies/tree/master