【问题标题】:reitit.frontend - HTML5Router does not prevent anchor click as should on matching routereitit.frontend - HTML5Router 不会像匹配路由那样阻止锚点点击
【发布时间】:2022-05-09 01:32:31
【问题描述】:
(gevents/listen js/document goog.events.EventType.CLICK ignore-anchor-click))
  • 应该 - 然后一切正常
(gevents/listen js/document goog.events.EventType.CLICK ignore-anchor-click true))

问题

  • 有没有办法在没有 PR 或分叉的情况下改变这种行为?

【问题讨论】:

    标签: clojurescript reitit


    【解决方案1】:

    解决方案

    • 从 reitit.frontend.history 复制功能代码
    • 使用历史记录取消订阅和重新订阅
    (let [history (Yzma.frontend.easy/start! _ _ _)]
      (goog.events/unlistenByKey (:click-listen-key history))
      (goog.events/listen
       js/document
       goog.events.EventType.CLICK
       (fn [event]
         (when-let [element (Yzma.frontend.history/closest-by-tag
                             (Yzma.frontend.history/event-target event) "a")]
           (let [uri (.parse goog.Uri (.-href element))]
             (when (Yzma.frontend.history/ignore-anchor-click?
                    (.-router history) event element uri)
               (.preventDefault event)
               (let [path (str (.getPath uri)
                               (when (.hasQuery uri)
                                 (str "?" (.getQuery uri)))
                               (when (.hasFragment uri)
                                 (str "#" (.getFragment uri))))]
                 (.pushState js/window.history nil "" path)
                 (Yzma.frontend.history/-on-navigate history path)))))) true))
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      相关资源
      最近更新 更多