Реагент: Как получить новые реквизиты из компонента-будет-получать-реквизит?

Итак, подпись для component-will-receive-props такая:

https://github.com/reagent-project/reagent/blob/master/src/reagent/core.cljs#L114

:component-will-receive-props (fn [this new-argv])

Но new-args похоже на функцию или js-объект. Я ожидал, что это будет карта реквизита. Как получить карту реквизита от new-argv? Я могу получить старый реквизит от this до (reagent/props this), но это старый реквизит, а не новый.


person ma2s    schedule 11.09.2015    source источник


Ответы (2)


Хорошо, я наконец узнал, что это reagent.impl.util/extract-props. Итак, (reagent.impl.util/extract-props new-argv) вернет новые реквизиты.

https://github.com/regent-project/regent/blob/v0.5.1-rc3/src/regent/impl/util.cljs#L11

person ma2s    schedule 11.09.2015

Я думаю, что правильный способ сделать это через функцию реквизита. Пример здесь показывает это.

;; assuming you have reagent required :as reagent

(reagent/create-class
  {
  ...

  :should-component-update
  (fn [this]
    (println "next-props" (reagent/props this))
  ...
  })
person Jon Rose    schedule 07.12.2015
comment
Это возвращает текущие реквизиты, а не новые реквизиты, которые искал OP. - person wpcarro; 27.10.2017