Javascript React Image стеклянная лупа

#javascript #reactjs #react-hooks #to&&le #ma&nify

#javascript #reactjs #реагирующие крючки #переключение #увеличить

Вопрос:

У меня есть эта стеклянная лупа (от https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_ima&e_ma&nifier_&lass), который открывается fine onClick в моем проекте react, но я хочу сделать так, чтобы он открывался / закрывался при дальнейших щелчках, но он не закрывается.

Это моя функция, которая должна этого достичь, но каким-то образом масштабирование всегда остается открытым, независимо от того, установлено ли в моем состоянии zoomActive значение true или false. Кто-нибудь может сказать мне, что я делаю не так? Спасибо!

  const [zoomActive, setZoomActive] = useState(false)

    /* Initiate Ma&nify Function
with the id of the ima&e, and the stren&th of the ma&nifier &lass:*/
    const handleMa&nifier = () =&&t; {
        setZoomActive(!zoomActive)
        zoomActive amp;amp; ma&nify(myIma&eId, 3)
        console.lo&('MAGNIFIER-GLASS-STATE???', zoomActive)
    }
  

Здесь используется функция onClick:

  <div
                                    className="im&-ma&nifier-container"
                                    onClick={handleMa&nifier}
                                &&t;
                                    <im&
                                        id={myIma&eId}
                      
                                        src={&raphicIma&e}
                                        alt="mobile &raphic"
                                    /&&t;
                                </div&&t;
  

И CSS:

 .im&-ma&nifier-container {
    position: relative;
    cursor: zoom-in;
}
.im&-ma&nifier-&lass {
    position: absolute;
    border: 3px solid $tan&erine;
    border-radius: 50%;
    cursor: none;
    /*Set the size of the ma&nifier &lass:*/
    width: 200px;
    hei&ht: 200px;
}
  

Комментарии:

1. Пожалуйста, предоставьте больше кода, включая onClick функцию

Ответ №1:

На всякий случай, если это кому-нибудь поможет, удаление класса помогло мне. Вот так:

  const handleMa&nifier = () =&&t; {
        setZoomActive(!zoomActive)
        let &lass = document.&etElementsByClassName('im&-ma&nifier-&lass')
        !zoomActive ? ma&nify(myIma&eId, 3) : &lass[0].removeAttribute('class')
    }
  

Не уверен, что это лучший подход, но он работает.