Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

nao remove

import React,{Component} from "react";

const TheadC =()=>{
    return (
        <thead>
          <tr>
            <th>autor</th>
            <th>livro</th>
            <th>preco</th>
          </tr>
        </thead>
    );
}



 const TbodyC = props =>{



    let linha = props.autores.map((element,index)=>{

        return (<tr key = {index}>    

                    <td>{element.nome}</td>
                    <td>{element.livro}</td>
                    <td>{element.preco}</td>
                    <td><button onClick={()=>props.removeAutor(index)}>remover</button></td>
              </tr>);
    })


    return (<tbody>
                {linha}
            </tbody>);
 }


 export class Tabela extends Component
{
    render()
    {
        const {autores,removerAutor} = this.props 



        return(
        <table> 

            <TheadC/>
            <TbodyC autores={autores} removeAutor = {removerAutor}/>

      </table>);
    }
}


export default Tabela
import React,{Component} from "react";
import './App.css';
import Tabela  from "./tabela"


class App extends Component 
{ 

  state = {

    autores : [
      {
        nome: 'Paulo',
        livro: 'React',
        preco: '1000'
      },
      {
        nome: 'Daniel',
        livro: 'Java',
        preco: '99'
      },
      {
        nome: 'Marcos',
        livro: 'Design',
        preco: '150'
      },
      {
        nome: 'Bruno',
        livro: 'DevOps',
        preco: '100'
      }
    ]

  };


   removerAutor = (index)=>
    {
        const {autores} = this.state;

        return this.setState({

          autor: autores.filter((autorAtual,indice)=>{


              return index !== indice ;
          })
        })

    };

    render()
    {
      return  <div className="app">
        <Tabela autores = {this.state.autores} removerAutor = {this.removerAutor}/>

      </div>

    }



  }

export default App;

nao da nenhum erro mas nao esta apagando

2 respostas
solução!

Olá Luan, tudo bem com você?

A questão está aqui:

        return this.setState({

          autor: autores.filter((autorAtual,indice)=>{


              return index !== indice ;
          })
        })

Na hora de fazer o setState, você utilizou um campo que na verdade não está em nosso estado, dessa forma você apenas criou um novo valor nele com o filtro, mas o nosso estado de autoresse manteve igual :)

Na verdade é necessário que seja:


        return this.setState({

          autores: autores.filter((autorAtual,indice)=>{


              return index !== indice ;
          })
        })

Dessa maneira o valor do estado autores, será o valor atual filtrado como indicado pelo instrutor :)

Abraços e Bons Estudos!

entendi, achei que fosse so uma chave e valor