Я использую Vuex, и его приверженность только изменению состояния через mutators
или actions
заставляет меня думать, что ваш магазин должен включать в себя как можно более плоский объект, только с типами примитивов.
Некоторые потоки даже предписывают нормализацию ваших данных (поэтому вместо вложенных деревьев объектов у вас есть объекты с массивами идентификаторов, указывающими на древовидные отношения). Это, вероятно, близко соответствует вашему JSON API.
Это заставляет меня думать, что хранение классов (которые могут иметь методы для изменения себя ) в вашем хранилище потоков является анти-паттерном. Действительно, даже гидратация данных вашего магазина в класс выглядит так, как будто вы идете против течения, если ваш класс не выполняет никаких изменений своих внутренних данных.
Что тогда заставило меня задуматься, использует ли любой класс в Vue / Vuex / Reactive / Flux анти-паттерн?
Библиотеки явно предназначены для работы с простыми объектами JS, и общее взаимодействие с API (данные, данные) заставляет меня думать, что более функциональный подход (без неизменности) - это то, о чем думали первоначальные дизайнеры .
Кажется также проще написать код, который запускается с function => test => state mutator wrapper around function
.
Я понимаю, что объекты JS и классы JS ведут себя очень схожим образом (и в основном это одно и то же), но моя логика заключается в том, что если вы не проектируете с учетом классов , то с большей вероятностью не загрязнять ваше состояние непостоянными изменениями состояния .
Есть ли общее мнение в сообществе, что ваш код потока должен быть более функциональным и менее объектно-ориентированным?