1
resposta

Sintaxe correta da função no React

Oi, criei uma função para abrir uma modal na minha pagina mas estou com dificuldade com a sintaxe correta então fica dando erro. Qual seria a forma correta?

import React, { Component } from "react";
import "./style.css"

class BookCard extends Component {
  render() {
    return (
      <section className="bookcard-item click-modal">

        { function openModal(modalID){
            const modal = document.getElementById(modalID);
            if(modal) {
              modal.classList.add('modal-bookcard-open');
              modal.addEventListener('click', (e) => {
                if(e.target.id == modalID || e.target.className == 'modal-btn-close') {
                  modal.classList.remove('modal-bookcard-open');
                }
            });
           }
          }          
          const clickModal = document.querySelector('.click-modal');
          clickModal.addEventListener('click', () => openModal('modal-bookcard'));}

        <a href="https://www.youtube.com" target="_blank" rel="noreferrer">
          <img src="{BlackBook}" alt="LIVRO 1" />
        </a>
        <p>Livro 1</p>
        <p>Media %%</p>
      </section>
    );
  }
}

export default BookCard;
1 resposta

Fala ai Marilia, tudo bem? A função openModal deveria ser criada no corpo do elemento e não dentro do JSX e sua função de renderização, ou seja, fora do render e dentro do BookCard.

Outro ponto, você está utilizando API's do DOM e interagindo de forma direta com ele, em React, a gente delega essa responsabilidade para o React através de manipulações de estado.

Ou seja, sua função deveria alterar um estado de true para false ou false para true e você iria renderizar a modal em caso do estado ser true.

Espero ter ajudado.