Tavion
@Tavion
front-end developer

Как правильно контролировать состояния loader'а?

У меня есть компонент - лоадер, который закрывает страницу, в ожидании пока она загрузится. Она является компонентом

var PageLoader = React.createClass({
     render: function() {
        return (
            <div className='loader'>
                <div className="loader-body" />
                <div className="loader-section section-left" />
                <div className="loader-section section-right" />
            </div>
        );
    }
});

React.render(<PageLoader />, body);


Ну там ещё стили, сюда их писать не буду. Лоадер скрывается, когда .loader получает класс .loaded. Получает он этот класс на complete ajax запроса, просто через
$('.loader').addClass('loaded');

Правильно ли это, с точки зрения "React way"? Или подобные изменения стоит производить через контроль состояний компонента? Если да, то как лучше это сделать?
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
Laiff
@Laiff
Front-end developer
Указанная конструкция не верна в корне, React way может выглядеть примерно так:
var PageLoader = React.createClass({
     onAjaxComplete : function() {
         ths.setState({loaded: true});
     },
     render: function() {
        var classes = cx({
           loader: true,
           loaded: this.state.loaded,
        })
        return (
            <div className={classes}>
                <div className="loader-body" />
                <div className="loader-section section-left" />
                <div className="loader-section section-right" />
            </div>
        );
    }
});

React.render(<PageLoader />, body);


Однако для оганизации потока данных все таки рекомендую посмотреть в сторону Flux архиектуры, там состояние будет получаться из соответствующего хранилища. flummox reflux
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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