Как стать автором
Обновить

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

мне кажется самое интересное - это декларативная разметка отправляемых событий. Это позволило бы условно говоря "программировать мышкой".

все ивенты обрабатываются в единственном обработчике

Это решение не выдержит нагрузку больше, чем домашняя страничка Васи Пупкина.

я не знаю теорию js

Зато придумал новую архитектуру ивентов. Но

Я не обязан дать вам готовый код, я всего лишь хочу показать вам такой подход

Удивительно) ещё и подход заточен под конкретную библиотеку react, которая создана для работы с картами - а у этого явно есть своя специфика.

Базовое использование выглядит так:

useEffect(() => {
  // проверяем необходимость обновить коллбек
  if (tool == "pin" && drawmode) {
    
    // создаем простую функцию как и всегда
    let handleClick = (e: MapMouseEvent) => {
      //
      // логика
      //
    };

    // вешаем ивент
    ME.click.pin = (e) => handleClick(e);

    return () => {
      // удаляем по необходимости
      ME.click.pin = (e) => () => {};
    };
  }
}, [...]);

Выглядит ужасно. То есть каждый раз, когда нужно повесить новый хедлер на onClick по конкретному элементу, мы вместо этого устанавливаем какой-то глобальный onClick, который будет меняться вот так в каждом useEffect?

На самом деле уже давно придумали такую штуку, как делегирование событий. Когда например вместо того, чтобы вешать 10 хедлеров на 10 одинаковых по функционалу дочерних элементов, мы вешаем 1 хендлер на родителя, вытащив id потомка(или что нам нужно для успешной обработки события) через event.target. Вам возможно именно этого и не хватало? В любом случае незнание базы языка вряд ли может привести к каким-то действительно серьёзным открытиям/новым архитектурам. Скорее наоборот, в данном случае второго буквально вытекает из первого, причём вытекает сомнительного качества

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации