Javascript 反应-URL中的链接是#[object%20HTMLParagraphElement]而不是#id

Javascript 反应-URL中的链接是#[object%20HTMLParagraphElement]而不是#id,javascript,reactjs,Javascript,Reactjs,我有一个函数可以计算固定选项卡滚动到的正确位置,但我注意到当它们滚动到此位置时,它会将URL更改为#[object%20HTMLParagraphElement],而不是#idname 下面是我的功能,当用户单击我的固定导航上的某个选项卡时,单击会触发此功能 calculateScrollPosition (e) { const nav = document.querySelector('#navbar') if (!nav) return let navHeight = nav.

我有一个函数可以计算固定选项卡滚动到的正确位置,但我注意到当它们滚动到此位置时,它会将URL更改为#[object%20HTMLParagraphElement],而不是#idname

下面是我的功能,当用户单击我的固定导航上的某个选项卡时,单击会触发此功能

calculateScrollPosition (e) {
  const nav = document.querySelector('#navbar')
  if (!nav) return

  let navHeight = nav.getBoundingClientRect().height
  let section = document.querySelector(e.target.parentElement.dataset.link)
  let sectionTop = section.getBoundingClientRect().top

  const body = document.body
  const docEl = document.documentElement

  const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop
  const clientTop = docEl.clientTop || body.clientTop || 0
  const top = Math.round(sectionTop + scrollTop - clientTop)

  let scrollHeight = top - navHeight
  window.scroll(0, scrollHeight)
  window.location.hash = e.target
  e.preventDefault()
}
您将目标元素分配给它,而不是目标元素的id

window.location.hash = e.target.id
或者目标元素的其他一些我们一无所知的特性,因为您的示例代码中没有包含任何HTML

window.location.hash = e.target.id