Какой лучший из следующих подходов?
Внешняя подписка, раннее удаление ссылок
(defn component [msg]
[:p msg]))
(let [msg (rf/subscribe [:msg])]
[component @msg]
Внешняя подписка, поздняя отмена ссылки
(defn component [msg]
[:p @msg]))
(let [msg (rf/subscribe [:msg])]
[component msg]
Внутренняя подписка, раннее удаление ссылки
(defn component []
(let [msg @(rf/subscribe [:msg])]
[:p msg])))
Внутренняя подписка, поздняя отмена ссылки
(defn component []
(let [msg (rf/subscribe [:msg])]
[:p @msg])))
Когда я поддерживаю чистоту внутреннего компонента с помощью внешней подписки, я могу получить множество аргументов, которые необходимо передать через глубоко вложенную структуру часто несвязанных родителей. Это может легко превратиться в беспорядок.
Когда я подписываюсь внутри внутреннего компонента, он становится нечистым, теряя легкость тестирования.
Кроме того, мне интересно, есть ли важная разница между ранним и поздним разыменованием, кроме того, что я должен пройти reagent/atom
при тестировании последнего.