Ответы пользователя по тегу React
  • Как не нарушить концепцию flux делая валидацию формы на серверной стороне?

    @vsuhachev
    Решение простое - рядом с данными заказа в store хранить еще и данные об ошибках по этому заказу. Если api вернуло ошибки валидации то сохранить их в store (это вызовет перерисовку компонента и ввывод ошибок). При деинициализации компонента, а так же при успешном выполнении вызова к api - чистить ошибки в store.
    Ответ написан
    2 комментария
  • Как распарсить данные с помощью React.js?

    @vsuhachev
    Вообще динамические шаблоны и реакт не очень совместимы т.к. реакт использует виртуальный DOM и не ожидает от вас того что вы будете что-то менять в реальном DOM

    Видимо один из возможных путей - переписать шаблоны под react-style и компилить их в js-код. Код будет выглядеть как-то так:
    function template() {
    	            return react.createElement(
    	                'div',
    	                null,
    	                react.createElement(
    	                    'h1',
    	                    { className: 'text-danger' },
    	                    'Page not found'
    	                ),
    	                react.createElement(
    	                    'p',
    	                    null,
    	                    'This page does not exist'
    	                )
    	            );
    	        }


    Потом грузить его динамически и выполнять, а результат вставлять куда-то во внутрь обычных компонентов.
    Но это как мне видится просто адский гемор, как минимум все зависимости (react и т.п.) каким-то образом должны быть видны из вашего шаблона, скорее всего их придется вытащить в глобальные переменные.
    Ответ написан
    Комментировать
  • Как сменить/выбрать город в React.js c Redux в RoR?

    @vsuhachev
    Вообще правильный RESTful не должен зависеть от кукисов и сессии.

    Соответственно город лучше хранить на клиенте в localStorage. При загрузке дополнительной информации нужно указывать его параметром в запросе.
    Ответ написан
    8 комментариев
  • Как reduсers обрабатывает данные в React Redux?

    @vsuhachev
    Редуцер должен возвращать объекты/хэши, а не так как у вас массивы.

    Весь этот синтаксис { ...state, loading: true} означает: Возьми пустой объект, скопируй туда все содержимое state, а потом переопредели следующие ключи (loading и т.д.)

    export default function company(state = defaultState, action) {
      switch (action.type) {
    
        case LOAD_REQUESTED:
          return {
            ...state,
            loading: true
          };
    
        case LOAD_OK:
          return {
            ...state,
            loading: false,
            counter: action.counter,
            app: action.app,
            errors: null
          };
    
        default:
          return state;
      }
    }
    Ответ написан
    2 комментария
  • Как получить state из другого компонента в React.js?

    @vsuhachev
    Касаясь общего вопроса - компоненты для этого и сделали компонентами, чтобы инкапсулировать их поведение, иначе будет опять всеми любимый спагетти-код. Рекомендую все же потратить время на освоение flux, это однозначно нужная вещь. Можно начать с этой статьи. Ну и redux заслуживает внимания - это одна из реализаций концепции flux.
    Ответ написан
  • Какие есть альтернативные варианты Flux?

    @vsuhachev
    Есть fluxxor. На счет крупных/некрупных мне как react-нубу судить трудно. Во флюксоре подкупает хорошая документация и то что там как-то логичнее все чем например в reflux (имхо)
    Ответ написан
    Комментировать
  • Как с помощью react.js добавлять элементы в select?

    @vsuhachev
    В реакт я новичек, но доже мне видно, что так работать не должно.
    Вот почитайте про жизненный цикл компонента. Насколько я понимаю вам нужно:

    1. запрос к серверу - сделать в функции componentDidMount на этапе первоначального создания компонента. Это метод вызывается только 1 раз, что нам и нужно
    2. в состояние компонента в функции getInitialState положить флаг "данных пока нет"
    3. по итогам загрузки, если все хороша то данные загнать в состояние, иначе в состояние сохранить признак ошибки обращения к серверу. Состояние можно менять с помощью метода компонента setState


    Ну а в функции render анализировать на наличие одного из случаев
    • если в состоянии установлен флаг "данных пока нет", то выводить надпись "загрузка..."
    • если в состоянии появились данные то вывести их
    • если в состоянии компонента есть признак ошибки - выводить надпись "ошибка..."


    PS: Надеюсь сильно не наврал :)
    Ответ написан