не могу разобраться с плавной прокруткой к якорю по id vue.js

Не могу реализовать прокрутку по клику на заголовок в шапке к элементу из другого компонента приложения с использованием id. Задача: при клике на заголовк навбара плавно прокручиваться к элементу(селекшену), которые находятся внутри другого компонента, однако связано через магазин при помощи id. Код компонентов представляю ниже. Склоняюсь к ошибке в магазине по определению ссылки на элемент из компонента

мои заголовки в шапке навбара, по которым я хочу кликать:

<li v-for="n in items" :key="n"><a @click="scroll" class="menu_link">Part {{n.id}}</a></li>

Скрипт:

setup() {
const store = useStore()

const lol = computed(() => store.state.lol)
const kek = computed(() => store.state.kek)

const items = computed(() => store.state.items)
const id = computed(() => store.state.id)

return {
  lol, kek, items, id,
  open: () => store.commit('changeStatus'),
  scroll: () => store.commit('openSlide')
}}

мои элементы, которым я хочу прокручиваться, находящиеся в другом компоненте vue.js

<section :class="selection + `${n.id}`" v-for="n in items" :key="n" :id="n.id">
  <h2 class="page_sub-title"> This is part {{n.id}}</h2>
    <div class="page_text">
    <p>Lorem ipsum dolor.</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
    <p>Lorem ipsum dolor sit amet.</p>
    <p>Lorem ipsum dolor sit amet, consectetur.</p>
    </div>
</section>

Скрипт:

setup() {
const store = useStore()

const items = computed(() => store.state.items)
const id = computed(() => store.state.id)
const selection = computed(() => store.state.selection)

return {
  items, id, selection
}}

магазин store, в котором я создаю массив и прописываю мутации:

state() {
return {
  status: true,
  lol: 'menu_body',
  kek: 'menu_icon',
  menuLinks: [],
  items: [...Array(6)].map((n, i) => ({
    id: `${i + 1}`,
    content: `content${i + 1}`
  })),
  selection: 'page_selection page_selection_'
}}, mutations: {
changeStatus(state) {
  state.status = !state.status
  if (state.status) {
    state.lol = 'menu_body _active'
    state.kek = 'menu_icon _active'
    document.body.classList.toggle('_lock')
  } else {
    state.lol = 'menu_body'
    state.kek = 'menu_icon'
    document.body.classList.remove('_lock')
    }
  },

openSlide(state, n){
  // Получение ссылки на элемент
  let slide = state.items[n]
  // Определение расстояния от начала страницы до нужного элемента
  let top = window.scrollY + slide.getBoundingClientRect().y;
  // Перемотка
  window.scrollTo(0, top)
}

Ответы (0 шт):