我正在从我的Reagent应用程序进行Ajax GET,以从数据库中加载一些内容。
我不确定获取此类ajax调用的结果并将其放入原子中是最佳方法,考虑到如果我将其放在原子中,则当取消引用原子时,Reagent会自动重新呈现组件,这意味着我会得到一个无限序列的ajax调用。
以下是一些代码:
我不确定获取此类ajax调用的结果并将其放入原子中是最佳方法,考虑到如果我将其放在原子中,则当取消引用原子时,Reagent会自动重新呈现组件,这意味着我会得到一个无限序列的ajax调用。
以下是一些代码:
(def matches (atom nil))
(defn render-matches [ms]
(reset! matches (into [:ul] (map (fn [m] ^{:key m}[:li m])
(walk/keywordize-keys (t/read (t/reader :json) ms)))))
这个函数基本上创建了一个[:ul [:li "这里的东西"] [:li "还有这里"]]
我想在我的页面上显示它,现在代码如下。
(defn standings-page []
(GET "/list-matches"
{:handler render-matches})
@matches)
GET
请求是如何触发的?在页面加载时?还是只有在需要那个试剂组分时才触发?或者是用户操作?你在这里混杂了很多东西。我只会把数据(而不是hiccups)放入原子中,并在standings-page
中呈现列表。如果您只需要请求一次,可以尝试使用delay
并引用standings-page
中的延迟。但是,这取决于您的用例(因此是前几个问题)。 - ClojureMostly