当用户在输入字段中点击 "ENTER" 时停止页面重新加载 - ClojureScript

Stop page reload when user hits "ENTER" in input field - ClojureScript

我正在学习使用 Clojurescript 和 shadow-cljs 进行 Web 开发,到目前为止效果非常好。我创建了一个 really bad reddit viewing webapp 但发现当用户第一次导航到该站点并单击搜索字段时,然后点击 "ENTER" 它将重新加载页面。我已将 (.preventDefault e) 订阅添加到 onSubmit 事件,但它仍会重新加载,除非用户更改图表并返回(将 # 添加到网址)。

这是生成输入字段的试剂代码:

[:input.form-control.mr-sm-2
  {:type "text"
   :placeholder "Aww"
   :aria-label "Search"
   :on-change #(rf/dispatch [:set-search-val  (-> % .-target .-value)])
   :onSubmit (fn [e] (do (.preventDefault e)
                         (identity false)))}]

2 个问题:

  1. 我做错了什么?我希望 subreddit 在进入时刷新,但如果我能让它停止重新加载我会很高兴

  2. 为什么网址中有#可以解决问题?

Here is the source code for anyone interested

您需要拼写属性 :on-submit(小写,虚线),(编辑) 并且它需要在表单上,​​而不是输入上。

旁白:您不需要 do 来包装函数体,并且除了在事件上调用 .preventDefault 之外返回 false 是多余的。