Можете ли вы смонтировать класс React программно?

#javascript #reactjs #mvvm

Вопрос:

Я пытаюсь реализовать шаблон mvvm с помощью React.В настоящее время я делаю это, создавая «тупой» компонент (представление), который зависит от функции «ViewModel». Функция возвращает все соответствующие состояния и бизнес-логику (например, обработчики событий и т.д.).

Мне интересно, могу ли я использовать тот же метод, но с классом react вместо функции React. Я добавил простой встречный пример, пытаясь реализовать эту идею. У меня есть доступ к состоянию, но когда я нажимаю кнопку увеличить количество, я получаю сообщение об ошибке: Предупреждение: Не удается вызвать setState для компонента, который еще не смонтирован.

https://codesandbox.io/s/purple-sound-ogerg?file=/src/App.js

Комментарии:

1. Из любопытства, почему вы пытаетесь навязать шаблон проектирования react, для которого он не был создан?

2. @Крисму. Поправьте меня, если я ошибаюсь, но, насколько мне известно, React не самоуверен в отношении шаблонов проектирования.

3. Это не совсем так. Определенно есть вещи, которые считаются анти-шаблоном, например, ваш императивный подход вместо того, чтобы сохранять декларативный характер. В то же время React старается оставаться доступным для широкого круга программистов, поэтому вы определенно можете заставить свой подход работать, например, используя атрибут класса вместо состояния. Вы можете прочитать эту статью о принципах проектирования react из их официальных документов: reactjs.org/docs/design-principles.html