@d-virt

Правильно ли я понял суть Flux?

Здравствуйте.

На сколько я понимаю, flux работает по следующему принципу: view подписывается на изменения данных в sotre, если данные store изменились, то перерисовываем view.
Ниже привожу простенький пример, без использование event libs and flux libs (эдогта мой смешно-никчемный flux =) ).
Уточните, пожалуйста, верно ли я понимаю саму идеи подхода flux?

"use strict";

import React from 'react';
import ReactDOM from 'react-dom';

var myEvent = new Event('myEvent');

class Store {
    constructor() {
        this.data = 'data';
    }
    getData() {
        return this.data;
    }
    setData(value){
        this.data = value;
        //Уведомляем, что состояние store изменилось
        document.dispatchEvent(myEvent);
    }
}

// Создаем хранилище
var StoreApp = new Store();

var HelloWorld = React.createClass({
    getInitialState : function () {

        var self = this;

        //подписываемся на изменения состояние store
        document.addEventListener('myEvent', function () {
            self.setState({
                data : StoreApp.getData()
            });
        });

        return {
            data : StoreApp.getData()
        };
    },
    render: function() {
        return (
            React.DOM.h1({}, this.state.data)
        );
    }
});

ReactDOM.render(<HelloWorld/>, document.getElementById('test'));

setTimeout(function () {
    // изменить состояние store
    StoreApp.setData(124124);
}, 2000);
  • Вопрос задан
  • 648 просмотров
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Комментарии есть, а ответа нет =) исправим?

На сколько я понимаю, flux работает по следующему принципу: view подписывается на изменения данных в sotre, если данные store изменились, то перерисовываем view

Все верно поняли. Осталось лишь добавить, что изменения в store попадают с помощью ACTIONS - так называемых действий.

p.s. из личного опыта - мне больше понравился redux, основное отличие которого от Flux - объект store всего лишь один! Внес свой вклад материалы на русском здесь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы