You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ClojureScript中将变量名以字符串形式传入函数?

场景描述

我想要为元素制作一个可动态创建的表单模板,组件涉及的元数据需使用传入的变量名作为其元数据。

代码示例

例如:

视图部分

(ns my.app
  (:require [my.app.templating :as template])

(defn view-component [nOperacaoExtrato]
    [:<>
      (template/temp-form nOperacaoExtrato)])

模板函数

(ns my.app.templating)

(defn temp-form
  "Template input"
  [dado]
  #_(js/console.log (str "meta-data: " (meta #'dado)))
  (let [nome-var (:name (meta #'dado))]
    [:div.col
     [:label
      {:for (str "form1_" nome-var)}
      "Natureza do Dispendio"]
     [:p
      {:class "form-control",
       :id (str "form1_" nome-var)
       :name (str "form1" nome-var)}
       dado]]))

预期结果

因传入的变量为nOperacaoExtrato,预期生成代码如下:

[:div.col
  [:label
   {:for "form1_re-fin-n-operacao-extrato-prop"}
      "Nº da Operação no Extrato"]
    [:p
   {:class "form-control",
    :id "form1_re-fin-n-operacao-extrato-prop",
    :name "form1_re-fin-n-operacao-extrato-prop"}
   (h/preencher-str nOperacaoExtrato)]]
问题所在

尝试以下两种方式获取元数据时,均返回null:

(meta #'data)
(meta data)

内容的提问来源于stack exchange,提问作者Pedro Gomes Branquinho Facti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:40:47