Ответы пользователя по тегу React
  • Как работать с базой данных Parse (или аналогом) в flux архитектуре?

    liubko
    @liubko
    Пожалуйста не делайте запросов из store. Все запросы делайте в actions, а потом кидайте event который уведомит store. Здесь детальней Что выбрать для SPA?

    Никогда не использовал ParseReact. Если бы работал с Parse то скорее всего сам бы делал запросы к api, вместо ParseReact.
    Ответ написан
  • Что выбрать для SPA?

    liubko
    @liubko
    EDIT:
    сделал boilerplate
    ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----

    React, Fluxxor, react-router, flowtype, webpack, babeljs, axios

    структура:
    --app/
    ----actions/
    ------index.js
    ------Article.js
    ----api/
    ------index.js
    ------Article.js
    ----stores/
    ------index.js
    ------Article.js
    ----pages/
    ------ArticlePage.js
    ------ArticlePage.less
    ----components/
    ------MyComponent.js
    ------MyComponent.less
    ----main.js
    ----router.js
    ----EventConstants.js


    pages/ArticlePage.js:
    var React = require("react/addons");
    var Fluxxor = require("fluxxor");
    
    require("./ArticlePage.less");
    
    var ArticlePage = React.createClass({
      // Компоненты подписываются на изменения в store
      mixins: [
        Fluxxor.FluxMixin(React),
        Fluxxor.StoreWatchMixin("article")
      ],
    
      getStateFromFlux() {
        // достаем данные из store
        return {
          articles: this.getFlux().store("article").getArticles()
        };
      },
    
      componentWillMount() {
        // вызываем action
        this.getFlux().article.fetch();
      },
    
      render() {
        // render articles
      }
    });
    
    module.exports = ArticlePage;


    action/Article.js:
    var EC = require("../EventConstants");
    var api = require("../api/");
    
    module.exports = {
      fetch() {
        // в api делаем сам запрос к серверу
        return api.article
          .fetch()
          .then(data => {
            this.dispatch(EC.SERVER.RECEIVE_ARTICLES, data.articles);
            return data.articles;
          });
      }
    };


    store/Article.js:
    var Fluxxor = require("fluxxor");
    var EC = require("../EventConstants");
    
    var ArticleStore = Fluxxor.createStore({
      initialize() {
        this._articles = [];
    
        this.bindActions(
          // подписываемся на событие
          EC.SERVER.RECEIVE_ARTICLES, this.handleReceive
        );
      },
    
      /*==========  Getters  ==========*/
      getArticles() {
        return JSON.parse(JSON.stringify(this._articles));
      },
    
      /*==========  handlers  ==========*/
      handleReceive(user) {
        this._articles = user.addresses;
        // Все компоненты которые подписаны на store будут уведомлены
        // в них также визовется getStateFromFlux
        this.emit("change"); 
      },
    });
    
    module.exports = ArticleStore;


    EventConstants.js:
    module.exports = {
      UI: {
        // тут ивенты которые не обращаются к серверу
      },
    
      SERVER: {
        RECEIVE_ARTICLES: "SERVER:RECEIVE_ARTICLES",
      }
    };
    Ответ написан
    Комментировать
  • Как сделать автофокус input-у в react.js?

    liubko
    @liubko
    в react v13 еще можно так:

    https://facebook.github.io/react/docs/more-about-r...


    The ref Callback Attribute
    The ref attribute can be a callback function instead of a name. This callback will be executed immediately after the component is mounted. The referenced component will be passed in as a parameter, and the callback function may use the component immediately, or save the reference for future use (or both).

    It's as simple as assigning a ref attribute to anything returned from render such as:
    <input ref={ function(component){ React.findDOMNode(component).focus();} } />




    или так
    React.findDOMNode(this.refs.myTextInput).focus();
    Ответ написан
    Комментировать
  • Какую реализацию Flux посоветуете?

    liubko
    @liubko
    Ответ написан
    Комментировать
  • Можно ли использовать Material-UI Framework на продакшене?

    liubko
    @liubko
    Пробовал когда делал мобильный апп на Phonegap. На старых android(4.0-4.2) тормоза жуткие, от большинства анимации и эфектов пришлось отказаться. Но это больше проблема самих устройств.
    Ответ написан
    Комментировать