Javascript 有没有办法防止盖茨比在单击<;a>;没有href的元素?

Javascript 有没有办法防止盖茨比在单击<;a>;没有href的元素?,javascript,gatsby,Javascript,Gatsby,我正试图在现有的盖茨比网站上创建一个捐赠页面。第三方捐赠表单脚本会生成一个文本按钮,用于选择其他付款方式。虽然其他交互元素是按钮,功能与预期相同,但此元素没有href。当点击链接时,当盖茨比试图使用标签进行路由时,页面会刷新,而不是像预期的那样显示插件的模式。有没有办法防止盖茨比在生成的链路上强加任何类型的路由器功能 我的第一次尝试是将gatsby-browser.js与onPreRouteUpdate一起使用,比如 export const onPreRouteUpdate = ({ loca

我正试图在现有的盖茨比网站上创建一个捐赠页面。第三方捐赠表单脚本会生成一个文本按钮,用于选择其他付款方式。虽然其他交互元素是按钮,功能与预期相同,但此元素没有href。当点击链接时,当盖茨比试图使用标签进行路由时,页面会刷新,而不是像预期的那样显示插件的模式。有没有办法防止盖茨比在生成的链路上强加任何类型的路由器功能

我的第一次尝试是将gatsby-browser.js与onPreRouteUpdate一起使用,比如

export const onPreRouteUpdate = ({ location, prevLocation }) => {
  if (location.pathname === 'donate' && prevLocation === 'donate') {
    return;
  }
}

但实际上,我找不到任何生命周期方法对链接点击做出反应。我怎样才能让盖茨比只注意它关于特定链接的p和q,或者任何空的href或#标记?提前感谢您提供的任何见解

据我所知,盖茨比使用的jsx可能是从babel编译而来的(这意味着网站是用虚拟dom动态设置的,即React)

有两种方法。在Web应用程序运行后将JS注入其中,或者在React trans编译虚拟dom之前对其进行内部解决

您要做的是按Id抓取按钮并覆盖其默认行为

export const onPreRouteUpdate = ({ location, prevLocation }) => {
      if (location.pathname === 'donate' && prevLocation === 'donate') {
        return;
      }
    }
这张纸条肯定会把你转到“捐赠”页面

您可能希望将页面路由到其当前位置

下面是一篇关于如何做到这一点的文章

您可能要做的另一件事是完全删除事件侦听器 下面是我删除一个窗口按键事件的示例

根据您的代码调整它

 return () => { window.removeEventListener('keydown', onKeyDown) }