2016-11-27 2 views
0

У меня возникают проблемы с обновлением состояния с данными из полей ввода в Om.next.Обновление вложенного состояния в Om.next

Состояние чтения в Om.next разрешено запросами и запросами, позволяющими компонентам реализовывать выборку состояния независимо от контекста, что отлично, поскольку это означает, что компоненту не нужно знать структуру атома состояния, это просто должен понимать локальный фрагмент атома государства, который относится непосредственно к нему.

К сожалению, я не смог определить способ сделать это в противоположном направлении, т. Е. Состояние мутирования, основанное на взаимодействии пользователя с компонентами, которое не связывает его с положением компонента в атоме состояния ,

Большинство примеров в Интернете имеют мутативные функции, которые изменяют конкретный путь в атоме состояния, начиная с корня.

(defonce app-state (atom {:badge {:credentials {:user "" :password ""}}})) 

Так что теперь я иду, чтобы сделать компонент:

Object 
(render [this] 
(dom/div nil 
     (dom/input #js {:onChange ??? 
         :value {:user value}}) 
     (dom/input #js {:onChange ???? 
         :value {:password value}}))) 

Это довольно грубый пример, но как я могу обновить состояние, когда пользователь, без соединения с тем, что она хранится под пути [:badge :credentials]?

Чтения охвачены запросом, но мутаций нет. Это простой надуманный пример, но мне становится хуже, когда я пытаюсь отобразить и обновить вложенное дерево с неизвестной формой (при кодировании).

ответ

0

Ваш :onChange может вызвать одну из ваших мутаций:

:onChange (fn [_] (om/transact! this `[(app/set-name { :person 1 :name ~n })])) 

Помимо параметров, а также место, где мутация вызывается из, нет никакого сцепления - мутация не что иное, как имя - здесь app/set-name , Конечно, мутация должна быть реализована. Вот оно:

(defmethod m/mutate 'app/set-name 
    [{:keys [state] :as env} key {:keys [person name] :as params}] 
    {:action (fn [] 
    (swap! state update-in [:people/by-id person] assoc :person/name name))}) 

Мутация код сами по себе будет иметь дело с нормированным приложением государством, что означает, что структурно-форма данных не является дерево.

Этот пример взят из: http://localhost:3449/#!/untangled_devguide.G_Mutation

Смежные вопросы