Использую react-bootstrap. На них сделаны часто используемые самописные компоненты, типа поля ввода у которого есть лейбл и подсвечивается ошибка валидации под компонентом. Реакт используется чисто как рисовалка, состояние же хранится в самописных классах использующих mobX, и в этих самописных классах реализованы все нужные валидации. В целом благодаря mobX все эти велосипеды пишутся очень легко, тут даже ничего стороннего тащить в проект не надо.
Но самое важное в mobx, что логику можно пытаться писать в декларативном виде. Т.е. не как обычно принято, что можно назвать событийное программирование, когда например пишем обработчик обработки события изменения текста в поле ввода, и в этом обработчике вызываем десяток функций которые что-то вычисляют и меняют в других полях, в итоге получается лапша. А более декларативно, например что данное поле на форме является функцией вот этих трех полей. И если значение любого их этих трех полей поменяется, то перевычислится и значение данного поля. Причем не важно как оно поменяется, пользователь поменяет, или оно само зависит от 4го поля.
Просто используйте mobx. Эта очень крутая штука по управлению зависимостями между данными и позволяет точечно перерисовывать только то, что реально изменилось. Redux можете выкинуть на свалку.
Картинка, что вы привели, не может быть фотографией единичного фотона. Фотон взаимодействует квантовым образом, и оставляет только одну точку в случайном на фотопластинке, но не пятно. На картинке явно картина от очень большого количества фотонов, вот только каждый из них мог испускаться по одному, чтоб исключить взаимодействие между ними.
Кстати хочу поделиться еще идеями. То что свет нельзя сфокусировать в точку, а получается вот такое пятно, можно списывать не на его волновую структуру, а на второй закон термодинамики — если бы можно было сфокусировать свет в точку, то можно было нагреть ее до бесконечной температуры, выше чем тело испустившее свет, противоречие закону, так как тепло тогда распространялось от более холодного тела, к более горячему. Второй закон, в отличии от многих законов физики, так же несимметричен относительно обращения времени, возможно это благодаря этому время имеет определенное направление течения. Так же термодинамика напрямую связана с теорией информации. А в постулате теории относительности утверждается про максимальную скорость распространения информации. В общем термодинамика это царица всех физических наук, может быть она даст разгадки.
Но самое важное в mobx, что логику можно пытаться писать в декларативном виде. Т.е. не как обычно принято, что можно назвать событийное программирование, когда например пишем обработчик обработки события изменения текста в поле ввода, и в этом обработчике вызываем десяток функций которые что-то вычисляют и меняют в других полях, в итоге получается лапша. А более декларативно, например что данное поле на форме является функцией вот этих трех полей. И если значение любого их этих трех полей поменяется, то перевычислится и значение данного поля. Причем не важно как оно поменяется, пользователь поменяет, или оно само зависит от 4го поля.
Кстати хочу поделиться еще идеями. То что свет нельзя сфокусировать в точку, а получается вот такое пятно, можно списывать не на его волновую структуру, а на второй закон термодинамики — если бы можно было сфокусировать свет в точку, то можно было нагреть ее до бесконечной температуры, выше чем тело испустившее свет, противоречие закону, так как тепло тогда распространялось от более холодного тела, к более горячему. Второй закон, в отличии от многих законов физики, так же несимметричен относительно обращения времени, возможно это благодаря этому время имеет определенное направление течения. Так же термодинамика напрямую связана с теорией информации. А в постулате теории относительности утверждается про максимальную скорость распространения информации. В общем термодинамика это царица всех физических наук, может быть она даст разгадки.