Реагировать на загрузку функции onclick как «функция noop () {}»

Я понятия не имею, почему это происходит, но по какой-то причине в Firefox мой проект реагирования использует tsx, работающий под Vite. и я пытаюсь запустить эту функцию по клику/нажатию, которая динамически меняет заголовок и что она делает при нажатии на логотип. рассматриваемый код:

function Logo() {
  return (
    <a
      href = {window.innerWidth > 600 ? "/home" : undefined}
      onClick = {() => {
        if (window.innerWidth <= 600) {
          // run your function here
          if (document.getElementById("header")!.style.height === "3rem") {
            document.getElementById("header")!.style.height = "100vh";
            // document.getElementById('header')!.style.top = '3rem';
          } else if (
            document.getElementById("header")!.style.height === "100vh"
          ) {
            document.getElementById("header")!.style.height = "3rem";
          } else {
            // Do something else if necessary
          }
        }
      }}
    >
      <div>
        <img
          src = "./src/assets/mediaKits/reineYurkowskiAssets/initialsThicc.svg"
          alt = "Reine Yurkowski's signature"
          style = {{ transform: "scaleX(1.5) skew(10deg, 10deg)" }}
        />
      </div>
    </a>
  );
}

но по какой-то причине, когда я пытаюсь запустить его из локального порта, используя yarn dev, он загружается как: "function noop() {}".

это работало некоторое время, прежде чем как-то просто сдаться и больше не работать.

я пытался сделать несколько вещей, например сделать это функцией и просто вызвать ее, закодировать ее в теге, использовать gpt и множество других, но, похоже, ничего не работает, и я не могу понять, почему именно это происходит.

любая помощь будет принята с благодарностью.

Вы не должны манипулировать DOM в ответ. React использует нечто, называемое теневым домом legacy.reactjs.org/docs/faq-internals.html

Wayne 01.04.2023 03:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Свойство элементов React onClick — это не то же самое, что свойство HTML-элементов onclick.

React обрабатывает события «за кулисами», в корневом элементе и прикрепляет обработчик noop() к фактическим элементам HTML.

Но это детали реализации, о которых вы не должны заботиться.

Основная проблема, скорее всего, в том, что вы манипулируете DOM вручную, чего никогда не следует делать в React.

Вместо этого вы должны, например. установите некоторое состояние в обработчике onClick и создайте компонент headerJSX , а не с DOM-методами) в соответствии с состоянием.

Например.

const [ height, setHeight ] = useState('3rem');

// ...

<a href = "..." onClick = { function(){
    if ( height === "3rem" ){
        setHeight("100vh");
    }
}} >

// ...

<MyHeader style = {{ height: height }} />

Другие вопросы по теме