Pessoal,
Estou adaptando o projeto para uma lista de compras e estou parado em um erro que não encontrei solução... se alguém puder me ajudar eu agradeço.
O erro que aparece é: Warning: Expected onClick
listener to be a function, instead got a value of object
type
Aqui está meu App.js
Onde eu crio a função deletarProduto e invoco ela na Lista quando chamo o aoDeletar
import { useState } from 'react'
import Banner from './componentes/Banner';
import Formulario from './componentes/Formulario';
import Lista from './componentes/Lista';
function App() {
const categorias = [
'Frutas',
'Verduras e Legumes',
'Limpeza',
'Enlatados'
]
function deletarProduto() {
console.log('deletando produto')
}
const [produtos, setProdutos] = useState([])
const produtoAdicionado = (produto) => {
// console.log(produto)
setProdutos([...produtos, produto])
}
return (
<div className="App">
<Banner />
<Formulario categorias={categorias} produtoCadastrado={produto => produtoAdicionado(produto)}/>
<div className='lista-categoria'>
{categorias.map(categoria =>
<Lista
key={categoria}
categoria={categoria}
produtos={produtos.filter(produto => produto.categoria === categoria)}
aoDeletar={deletarProduto}
/>
)}
</div>
</div>
);
}
export default App;
Segue o arquivo Lista.js onde passo o aoDeletar para deletar um produto da lista
import Produto from '../Produto'
import './Lista.css'
const Lista = (props, aoDeletar) => {
return (
props.produtos.length > 0 && <section className='lista'>
<h3>{props.categoria}</h3>
<div>
{props.produtos.map(produto => {
return <Produto key={produto.produto} produto={produto.produto} aoDeletar={aoDeletar} />
})}
</div>
</section>
)
}
export default Lista
E por último o arquivo Produto.js onde tem o botão com o onClick
import './Produto.css'
const Produto = (props, aoDeletar) => {
return (
<div className='produto'>
<p>{props.produto}</p>
<div className='deletar' onClick={aoDeletar}>Deletar</div>
</div>
)
}
export default Produto
Eu tentei a seguinte solução. em várias páginas (stackoverflow e cia...) indicam que no onClick devemos colocar uma arrow function ( onClick={() => aoDeletar} ) isso de fato eliminou o erro mas não chama a função aoDeletar que invoca a deletarProduto e deveria aparecer o console.log ('deletando produto').
Muito obrigado pela ajuda.