Clojure 在“试剂”中动态渲染组件的正确方法是什么?
在React中动态呈现组件是其使用的基础。从这里可以看出,这很容易做到:Clojure 在“试剂”中动态渲染组件的正确方法是什么?,clojure,clojurescript,reagent,Clojure,Clojurescript,Reagent,在React中动态呈现组件是其使用的基础。从这里可以看出,这很容易做到: render() { return ( <div className="blocks_loop"> {this.props.blocks.map(block => ( <div className="block" /> ))} </div> ) } 因为您正在创建hiccup,所以
render() {
return (
<div className="blocks_loop">
{this.props.blocks.map(block => (
<div className="block" />
))}
</div>
)
}
因为您正在创建hiccup,所以可以使用任何clojure代码映射或循环数据
因为您正在创建hiccup,所以可以使用任何clojure代码映射或循环数据 “它们不适用于任何严肃的应用程序”需要引用。好吧,也许有人用过一次,但你能回答这个问题吗?;)如果“问题”归结为“请将此javascript代码翻译成ClojureScript”,那么不,我们不会在这里这样做(如果没有人展示他们自己的真诚努力和具体的、狭隘的问题);关于这方面的大量参考资料,请特别参阅。显示您在ClojureScript中尝试执行的操作以及遇到的特定故障模式。(当修改此项时,请明确说明您试图避免“使用
列表
”的意思。)以及你所期望的一个解决方案,而不是那样做。如果你考虑任何一个序列,一个列表,我不知道你如何存储或通过一个可变数量的项目,没有某种序列类型存储它)。嗨,查尔斯-达菲-不,我不希望任何人翻译我的代码在这里。我来自js背景,正在努力学习ClojureScript。我的观点是,对于react(我正在使用试剂,这显然是它的ClojureScript化身),有一种简单、标准且有良好文档记录的方法来实现这一点,正如我给出的代码示例所示。在花了大量时间试图用ClojureScript实现同样的效果之后,我一直没能做到,正如你在我的帖子链接中看到的那样,这只是一个又一个错误。当我说列表
时,显然我不是指Clojure列表,我是指html元素。“它们只是不适用于任何严肃的应用程序”需要引用。好吧,也许有人用过一次,但你能回答这个问题吗?;)如果“问题”归结为“请将此javascript代码翻译成ClojureScript”,那么不,我们不会在这里这样做(如果没有人展示他们自己的真诚努力和具体的、狭隘的问题);关于这方面的大量参考资料,请特别参阅。显示您在ClojureScript中尝试执行的操作以及遇到的特定故障模式。(当修改此项时,请明确说明您试图避免“使用列表
”的意思。)以及你所期望的一个解决方案,而不是那样做。如果你考虑任何一个序列,一个列表,我不知道你如何存储或通过一个可变数量的项目,没有某种序列类型存储它)。嗨,查尔斯-达菲-不,我不希望任何人翻译我的代码在这里。我来自js背景,正在努力学习ClojureScript。我的观点是,对于react(我正在使用试剂,这显然是它的ClojureScript化身),有一种简单、标准且有良好文档记录的方法来实现这一点,正如我给出的代码示例所示。在花了大量时间试图用ClojureScript实现同样的效果之后,我一直没能做到,正如你在我的帖子链接中看到的那样,这只是一个又一个错误。当我说列表
时,显然我不是指Clojure列表,我指的是html元素。当OP说他们不想要“使用列表
”时,这是否意味着他们根本不想要任何序列类型?(老实说,我不知道他们在问什么,所以我不知道这个答案或任何其他答案是否符合要求)。我认为这只是语言障碍。对于初学者来说,像“动态”构建hiccup这样的事情并不明显。幸运的是,它有一个投票按钮;)感谢@JochenBedersdorfer的直截了当的回答——同样,当我说列表时,我指的是我提供的链接中的html/hiccup/jsx
,而不是Clojure数据结构中的list
。因此,如果我想循环一个实际的组件(在一个单独的函数中),我可以将您的代码行[:div.block])
替换为类似[函数返回hiccup])]
?当然可以。这就是在hiccup中嵌套组件的方式。只需使用名称即可。以下是在hiccup中何时使用[]vs()的相关文档:blocks
这里是一个序列。当OP说他们不想要“使用列表
”时,这是否意味着他们根本不想要任何序列类型?(老实说,我不知道他们在问什么,所以我不知道这个答案或任何其他答案是否符合要求)。我认为这只是语言障碍。对于初学者来说,像“动态”构建hiccup这样的事情并不明显。幸运的是,它有一个投票按钮;)感谢@JochenBedersdorfer的直截了当的回答——同样,当我说列表时,我指的是我提供的链接中的html/hiccup/jsx
,而不是Clojure数据结构中的list
。因此,如果我想循环一个实际的组件(在一个单独的函数中),我可以将您的代码行[:div.block])
替换为类似[函数返回hiccup])]
?当然可以。这就是在hiccup中嵌套组件的方式。只需使用名称即可。以下是有关何时在hiccup中使用[]vs()的相关文档:
(defn my-component [blocks]
[:div.blocks_loop
(for [b blocks]
[:div.block])])