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

TypeError: Cannot read property 'nome' of undefined

Olá, está dando esse erro no código mas não consigo encontrar o motivo, qual é o problema da linha 16?

13 | const linhas = props.autores.map((linha, index) => {
  14 |     return (
  15 |         <tr key = {index}>
> 16 |             <td>{linha.nome}</td>
     | ^  17 |             <td>{linha.livro}</td>
  18 |             <td>{linha.preco}</td>
  19 |             <td><button onClick = { () => props.removeAutor(index)}>Remover</button></td>

Código

import React, { Component } from 'react';

const TableHead = () => (<thead>
    <tr>
        <th>Autores</th>
        <th>Livros</th>
        <th>Preços</th>
        <th>Remover</th>
    </tr>
</thead>)

const TableBody = props => {
    const linhas = props.autores.map((linha, index) => {
        return (
            <tr key = {index}>
                <td>{linha.nome}</td>
                <td>{linha.livro}</td>
                <td>{linha.preco}</td>
                <td><button onClick = { () => props.removeAutor(index)}>Remover</button></td>
            </tr>
        );
    });

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

class Tabela extends Component {

    render() {
        const { autores, removeAutor } = this.props; 
        console.log(autores);

        return (
            <table>
                <TableHead />
                <TableBody autores={autores}  removeAutor = { removeAutor }/>
            </table>
        );
    }

}

export default Tabela;
3 respostas
solução!

Fala ai Tais, tudo bem? Olhando os códigos parecem estar corretos, infelizmente à olho não consegui identificar problemas.

Talvez eu removeria alguns espaços nas atribuições de propriedades, ficando:

import React, { Component } from 'react';

const TableHead = () => (
    <thead>
        <tr>
            <th>Autores</th>
            <th>Livros</th>
            <th>Preços</th>
            <th>Remover</th>
        </tr>
    </thead>
)

const TableBody = props => {
    const linhas = props.autores.map((linha, index) => {
        return (
            <tr key={index}>
                <td>{linha.nome}</td>
                <td>{linha.livro}</td>
                <td>{linha.preco}</td>
                <td><button onClick={() => props.removeAutor(index)}>Remover</button></td>
            </tr>
        );
    });

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

class Tabela extends Component {

    render() {
        const { autores, removeAutor } = this.props; 
        console.log(autores);

        return (
            <table>
                <TableHead />
                <TableBody autores={autores}  removeAutor={ removeAutor }/>
            </table>
        );
    }

}

export default Tabela;

Talvez isso resolve o problema.

Caso não resolva o problema, compartilha o erro completo apresentado no console do navegador.

Espero ter ajudado.

Tudo certo, consegui achar o erro :D eu tava escrevendo uma palavra errada, muito obrigada pela ajuda o/

Magina Tais, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.