以下方法中最好的是什么?
外部订阅,早期deref
(defn component [msg]
[:p msg]))
(let [msg (rf/subscribe [:msg])]
[component @msg]
Run Code Online (Sandbox Code Playgroud)
外部订阅,晚期deref
(defn component [msg]
[:p @msg]))
(let [msg (rf/subscribe [:msg])]
[component msg]
Run Code Online (Sandbox Code Playgroud)
内部订阅,早期deref
(defn component []
(let [msg @(rf/subscribe [:msg])]
[:p msg])))
Run Code Online (Sandbox Code Playgroud)
内部订阅,迟到deref
(defn component []
(let [msg (rf/subscribe [:msg])]
[:p @msg])))
Run Code Online (Sandbox Code Playgroud)
当我使用外部订阅保持内部组件纯粹时,我最终可能会有许多参数需要通过经常无关的父级的深层嵌套结构传递.这很容易变得一团糟.
当我在内部组件内部订阅时,它变得不纯净,失去了易测试性.
另外,我想知道早期和晚期解除引用之间是否存在重要差异,除了reagent/atom在测试后者时我必须通过.