Какие аргументы функции компонента формы 2 реагента используются?

Какая форма лучше?

(defn my-func [arg arg2]
 (fn [] [:div (str arg arg2)]))

Или этот?

(defn my-func []
 (fn [arg arg2] [:div (str arg arg2)]))

Пишу со своего телефона, так что простите за отступы ...


person Marcin Maicki    schedule 22.10.2019    source источник
comment
Добро пожаловать! Что вы имеете в виду под словом «лучше»? Быстрее, правильнее и т. Д.?   -  person tomRedox    schedule 22.10.2019


Ответы (2)


Между этими функциями есть еще одно различие, помимо арности.

Первая функция закроется через arg и arg2 при первом рендеринге и будет использовать эти аргументы для каждого последующего повторного рендеринга. Например.

(def a 1)
(def b 2)
[my-func a b]

всегда будет приводить к [:div '12'] независимо от того, были ли изменены a или b

Вторая функция будет принимать arg и arg2 при каждом рендеринге и обновит результат при изменении аргументов.

Найдите ошибку новичка в документы по реагентам

person jahson    schedule 22.10.2019

Я считаю, что ваш вопрос должен заключаться в том, какой из них правильный (первый правильный). У второго есть исключение arity. В зависимости от вашего варианта использования я бы предпочел определить и вызвать анонимную функцию, чтобы получить результаты. Рассмотрим это редактирование номер один:

(defn my-func [arg arg2]
  ((fn [] [:div (str arg arg2)])))
person JobSam    schedule 22.10.2019