@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 всего лишь один! Внес свой вклад материалы на русском здесь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы