Зачем стейт сделан так как сделан - хорошо описано в доках и всевозможных гайдах.
По какому критерию "неэффективности"? как вы это померяли, какие-то цифры есть?
Далее - не надо все пихать в гиганский стейт, и как-то его обновлять.
Если у вас сложный стейт в компоненте - скорее всего вы что-то делаете не так.
Для хранения данных "вообще" есть сторы уровня приложения, откройте для себя mobx
насчет "сложные структуры и легко сделать ошибку" - возьмите тайпскрипт и забудьте о 99% опечаток.
import mapwork.point
Vue как-то умеет это делать, и другие фреймворки тоже. Наверное, правда, они используют watches на каждый бит, это не так эффективно с точки зрения производительности, но зато эффективно с точки зрения разработки - не надо париться о структуре модели, она может быть какой угодно сложности.
Это мне непонятно, о чем вы. Пример был о том, как здорово и легко в Vue было одним только декларативным способом организовать рендеринг DOMa, там все было разбито на компоненты. Тормоза были только когда навешивались какие-то листенеры, и это было сделано неправильно.
Это из примера, в котором предлагается делать структуру дерева плоской. Разумеется, можно сделать лучше. Просто в том конкретном примере было сделано так, что ошибку допустить легко.
А какие еще есть либы-компоненты для работы со стейтом кроме Mobx? Мне не очень понравилось, что там слишком много делается под капотом, хотелось бы большей прозрачности.