Redux: синхронизация внутренней базы данных с деревом состояний внешнего интерфейса

redux

756 просмотра

2 ответа

3768 Репутация автора

По моему опыту, синхронизация базы данных и внешнего дерева состояний становится нетривиальной задачей по мере усложнения приложения.

Например, когда вы создаете новое Postв блоге, вы должны создать объект в БД, а также прикрепить postобъект в своем дереве состояний (например, внутри редуктора сообщений). Это становится сложнее, если дерево состояний является вложенным. Если вы обновляете комментарий, относящийся к сообщению, вы должны найти правильный пост в дереве состояний, найти правильный комментарий и обновить его.

Я понимаю, почему полезно иметь дерево состояний приложений, но такая синхронизация приводит к чрезмерным затратам, чтобы я по-настоящему оценил Redux.

В. Есть ли способ сделать эту синхронизацию более легкой?

Автор: Maximus S Источник Размещён: 19.07.2016 09:11

Ответы (2)


1 плюс

3615 Репутация автора

Решение

Метеор специально разработан для решения проблемы, которую вы упоминаете.

Redux предназначен только для управления состоянием на клиенте. Точнее, его задача - удерживать состояние, необходимое для самого интерфейса.

Он часто используется с React, где он функционирует как умное место для хранения чего угодно и всего, что нужно для визуализации интерфейса. Это часто включает в себя сложное состояние и может включать в себя много данных приложения. Затем он может начать больше походить на базу данных, но базы данных имеют ряд свойств, которых нет в Redux. Настойчивость приходит на ум ...

Meteor - это фреймворк, а Redux - нет. Таким образом, Meteor имеет огромное количество бай-инов, где Meteor решает, как справиться с большим количеством проблем в вашем приложении. Redux, с другой стороны, очень уместен. Это не решает, как выглядит ваше состояние, как вы общаетесь со своим бэкэндом или как вы визуализируете свой пользовательский интерфейс.

Так как Redux позволяет вам самим решать, как решать эти проблемы, он также оставляет за вас ответственность за это. Redux супер крошечный, и вы должны ожидать только твердого управления состоянием, и ничего более.

Какое состояние вашего глобального приложения вы перемещаете на клиент, полностью зависит от вас, и как вы подключаете его к своему бэкенду, и если этот бэкэнд запускает текстовые файлы node.js + Mongo или php + mysql или lisp +, полностью зависит от вы. То же самое нельзя сказать при использовании Meteor.

С большой властью приходит большая ответственность.

Автор: DDS Размещён: 19.07.2016 12:23

0 плюса

423 Репутация автора

У меня тот же вопрос, и я уверен, что есть проверенный и правильный ответ на этот вопрос. Тем не менее, я мозговой штурм двух возможных решений:

1) добавьте сообщение в состояние приложения «вручную», затем при следующем запросе GET согласовайте состояние и ответ (вашу стратегию). Это намного проще, если состояние вашего клиента нормализовано

2) сделать GET сразу после того, как статус POST равен 200, и обработать задержку с индикатором активности.

Принятый ответ для меня, не является фундаментальным объяснением.

Автор: Nth.gol Размещён: 25.03.2018 04:51
Вопросы из категории :
32x32