首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Reagent以三种方式呈现JSON?

为什么Reagent以三种方式呈现JSON?
EN

Stack Overflow用户
提问于 2016-02-08 22:30:01
回答 1查看 377关注 0票数 2

我试图在Clojurescript/Reagent中呈现来自API调用的JSON数据。当我使用js/alert时,我看到了我期望的json:["Sue" "Bob"]

代码语言:javascript
复制
(defn- call-api [endpoint]
  (go
    (let [response (<! (http/get endpoint))]
      (:names (:body response)))))

;; -------------------------
;; Views

(defn home-page []
  [:div (call-api "/api/names")])

这就是我引用库的方式(万一有问题)。

代码语言:javascript
复制
(ns myapp.core
    (:require [reagent.core :as reagent :refer [atom]]
              [reagent.session :as session]
              [cljs-http.client :as http]
              [cljs.core.async :refer [<! >!]]
              [secretary.core :as secretary :include-macros true]
              [accountant.core :as accountant])
    (:require-macros [cljs.core.async.macros :refer [go]]))

但是,当我将它记录到控制台时,我会得到一个与API响应完全不同的长散列。浏览器呈现"00000000000120“。

  • 为什么这些结果不同?(浏览器、警报窗口、控制台消息)
  • 如何获得在警报窗口中看到的内容以在页面上呈现?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 00:28:41

当您调用call-api时,它将返回一个go块。与其尝试在Reagent函数中直接使用go块,不如在ratom中更新返回值。

代码语言:javascript
复制
(def app-state (atom)) ;; ratom

(defn- call-api [endpoint]
  (go
    (let [response (<! (http/get endpoint))]
      (reset! app-state (:names (:body response))))))

(defn home-page []
  [:div @app-state])

(defn main []
  (call-api))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35280602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档