Мы недавно перешли на React + Flux из Angular, чтобы построить довольно сложное бизнес-приложение.React + Flux: получение начального состояния в магазине
Принимая во внимание, что один компонент контейнера, который передает все состояние в качестве свойств вниз по дереву компонентов, не является практическим способом разработки приложения для нас, поскольку приложение использует большие модальные страницы. Достаточное состояние передается модально для их загрузки своих данных в свои магазины.
У меня есть проблема: мне нужно получить начальное состояние (переданное как реквизит) в хранилище модального компонента. В this post хорошие ребята в Facebook говорят, что нормально использовать реквизиты для начального состояния, когда синхронизация не является целью.
Это, как я получить начальное состояние в моем магазине в данный момент:
var ABC = React.createClass({
...
getInitialState: function() {
return ABCStore.getInitialABCState(this.props.initialA);
},
...
var ABCStore = Reflux.createStore({
...
init: function() {
_state = {
a: null,
b: 'B init',
c: 'C init'
};
},
getInitialABCState: function(initialA) {
_state.a = initialA;
return _state;
},
getABCState: function() {
return _state;
}
...
Я не уверен, что лучшая практика, чтобы сделать это, или это Flux антишаблоном ли?
Он чувствует, как вы находитесь на крае антишаблона с этим магазином. Однако замечательная вещь о Flux - это скорее архитектурная концепция, чем просто компонент. Это означает, что вы можете создавать магазины несколькими способами и поддерживать их в духе Flux. В проекте, над которым я работал, мы использовали диспетчер из библиотеки Flux, а это означало, что хранилище не было инициализировано, как ваш пример.Магазин просто заселялся, когда нужны данные (действия от компонентов или маршрутизатора). Я не думаю, что ваш пример - плохая практика, но это открывает отличную дискуссию. – magnudae
Да, я надеюсь заговорить об этом, потому что у меня тоже есть это чувство, но мне нужно больше конкретного материала :) –