2015-12-23 3 views
4

Как я понимаю из документации по реакционной форме, вы обычно помещаете редуктор form в корень вашего дерева редуктора, а редукционная форма будет содержать состояние каждой формы внутри этого form ключ, основанный на имени формы.Формы связывания в нескольких разных точках крепления с редукционной формой

Однако это приведет к возникновению странной структуры, при которой данные формы для определенного дерева находятся под ключом формы, а не с другими данными состояния, связанными с ним. В этом примере приложение хранит список возможных типов учетных записей с сервера, которые логически должны быть сгруппированы с самой формой регистрации. Однако с Redux-формы они будут в совершенно разных поддеревьев:

  signup   
     /
     forms 
    / \ 
    / login 
    /
root 
    \  login--signinMethods 
     \ /
     header 
      \ 
      signup--accountTypes 

Я бы предпочел более организованным дерево, как это:

   form   
      /
     signup 
    / \ 
    /  accountTypes 
    /
root 
    \  signinMethods 
     \ /
     login 
      \ 
      form 

Возможно ли это с Redux-формы, или любой другая библиотека редукции?

+0

Мне любопытно, какую выгоду вы видите в результате этого (разбивая дерево состояний редукционной формы)? Лично я считаю, что сохранение дерева 'form' на корневом уровне для размещения всех форм (-ов) данных имеет наибольший смысл (как редукционная форма получается из коробки). Полагаю, вы могли бы воспользоваться предоставленной формойReducer и свернуть свои собственные редукторы в разных местах вашего дерева дерева (как вы сказали). В этот момент я чувствую, что вы можете сражаться с вашими инструментами (и изобретать колеса) исключительно из предпочтений, а не из реальных заслуг. – ErikTheDeveloper

+0

Да, это будет борьба с инструментами, и я не буду этого делать, если для этого потребуется куча усилий. Однако в этой ситуации каждая форма, вероятно, содержит внутри себя элемент '', используемые в этих формах, должны находиться в одной ветви дерева вместо совершенно разных мест. – Miguel

ответ

2

Попробуйте использовать reduxMountPoint вариант:

Использование этого свойства крайне нежелательно, но если вы абсолютно необходимо смонтировать перевождь-формы редуктор в где-нибудь, кроме формы в состояние вашего Redux, вы вам нужно будет указать ключ, который вы его установили внизу с этим свойством. По умолчанию «форма».

+0

afaik, который все еще монтирует все формы под одним единственным ключом, просто отличается от «формы» – Miguel

+0

Насколько я знаю, вы можете установить reducexMountPoint для каждой используемой формы, что делает их уникальными. –

+0

О, эй, ты прав! Я думал, что это глобальная ситуация. Следующая проблема - выяснить, почему это «сильно обескуражено». – Miguel

1

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

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