template
шаблон. Главное не забыть, что подключать vue надо будет с приставкой -bundler
если без сборки. const allMainFiltersStore = useAllMainFiltersStore();
const { sortedAndFilteredData } = allMainFiltersStore;
const allMainFiltersStore = useAllMainFiltersStore();
const sortedAndFilteredData = toRef(allMainFiltersStore, 'sortedAndFilteredData');
:key="index"
делать не рекомендуется, если у тебя есть id всегда предпочтительней использовать их: :key="product.id"
. click
который двинет твой слайдер от click
который перейдёт на другую страницу через locatin.href = ...
.var whitelistSelectors = [
'.my-slider .next-button',
'.my-slider .prev-button',
]
document.addEventListener('click', function(event) {
if (event.target.closest(whitelistSelectors.join(','))) return;
event.preventDefault();
event.stopImmediatePropagation();
}, true);
var blacklistSelectors = [
'a[href]',
'button:not(.my-slider .prev-button)',
'button:not(.my-slider .next-button)',
]
document.addEventListener('click', function(event) {
if (event.target.closest(blacklistSelectors.join(','))) {
event.preventDefault();
event.stopImmediatePropagation();
}
}, true);
ну тогда еще capture: trueприглядись.:)
declaration merging
- это продвинутая фича для продвинутых юзеров. В обычном случае ты не должен расширять библиотечные типы. Ты должен создавать свои.{
foo: 'string'
}
{
foo: string
bar: string
}
но можешь типу {
foo: string
bar?: string
}
bar
.MySuperMutableRefObject
у которого есть prev
ты присваиваешь обычный MutableRefObject
(полученный из useRef
) у которого нет prev
.interface MySuperMutableRefObject<T> extends MutableRefObject<T> {
prev: null | HTMLParagraphElement;
}
function useMySuperRef<T>(value?: T): MySuperMutableRefObject<T> {
const ref = useRef(value) as MySuperMutableRefObject<T>;
ref.prev ??= null;
return ref;
}