Комментарии 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. Вам возможно именно этого и не хватало? В любом случае незнание базы языка вряд ли может привести к каким-то действительно серьёзным открытиям/новым архитектурам. Скорее наоборот, в данном случае второго буквально вытекает из первого, причём вытекает сомнительного качества
Кажется, я придумал новую архитектуру ивентов и мне она нравится