Я начинаю использовать Facebook React в проекте Backbone, и пока все идет хорошо. Тем не менее, я заметил, что некоторые дублирования ползут в моем коде React.
Например, У меня есть несколько виджетов вида с такими состояниями, как INITIAL
, SENDING
и SENT
. При нажатии кнопки форма должна быть проверена, делается запрос, а затем состояние обновляется. Состояние сохраняется внутри React this.state
, конечно, вместе с значениями поля.
Если бы это были представления Backbone, я бы извлек базовый класс под названием FormView
, но мое впечатление было то, что React не поддерживает и не поддерживает подклассы, чтобы обмениваться логикой представления (исправьте меня, если я ошибаюсь).
Я видел два подхода к повторному использованию кода в React:
- Mixins (например LinkedStateMixin, который поставляется с React);
- Контейнерные компоненты (такие как react-infinite-scroll).
Правильно ли, что миксины и контейнеры предпочтительнее наследования в React? Это преднамеренное дизайнерское решение? Было бы разумнее использовать mixin или компонент контейнера для моего примера виджета формы из второго абзаца?
Вот суть с FeedbackWidget
и JoinWidget
в их текущем состоянии. Они имеют аналогичную структуру, аналогичный метод beginSend
, и оба должны иметь некоторую поддержку проверки (еще нет).