плохо:
* инициализация формы в рендере. Что появляются функции внутри компонента, которые работают с формой.
* компоненты адаптеры для формы.
Ты просто взял и перенес статичную инициализацию в динамический рендер и все обернул в useMemo
1. инициализация формы в рендере. на мой взгляд не очень правильно так говорить, в рендере мы делаем операции которые касаются вьюшки, связь вьюшки со сторой через хук я нахожу удобным и правильным решением. да и не инициализация это вовсе, а bind нужной сторы к нужной вьюшке.
1.1 функции внутри компонента опциональны и можно вообще их не использовать, но для многих это привычно и удобно, по этому они имеются.
2. компоненты адаптеры для формы. тут не понимаю до конца что не так, я лично не видел не одной адекватной, кастомизируемой реализации форм в которой не было бы таких компоннетов. это позволяет связать любой компонент с формой, или любой сторонний компоннент такой как meteril inputs или react-select. что именно не так в этом моменте я не понимаю.