• Как сбилдить приложение используя phonegap?

    mourr
    @mourr
    Passionate JS developer
    А чем не подходит встроенный инструмент (такой же Cordova-build как и у phonegap)

    $ ionic build ios
    Ответ написан
    Комментировать
  • Как правильно делать вёрстку мобильных приложений на react native?

    @Maxim16
    Аналогом процентов в той версии Flexbox, которая применяется в React Native, является свойство flex.
    Например, если у нас есть два элемента , которые вложены в родительский элемент , то можно сделать у первого вложенного в стилях свойство flex:5, а у второго - flex:3. В этом случае первый элемент будет занимать 5/8 от площади родительского элемента, а второй 3/8. Учитывая это, и поэкспериментировав со свойствами alignItems и justifyContent, я думаю, можно добиться нужного отступа без использования margin.
    Ответ написан
    2 комментария
  • Как правильно делать вёрстку мобильных приложений на react native?

    AMar4enko
    @AMar4enko
    Используйте https://github.com/kkjdaniel/react-native-device-d...
    для определения режимов ориентации и завязывайте на этом вью (можно просто стили менять, а можно полностью отдельный вью).

    Также в порядке бреда можно перед применением стили обрабатывать, чтобы сделать поддержку процентов к ширине и высоте экрана.
    Типа
    const style = { 
      header: { height: '50%' }    
    };
    
    prepareStyle: function() {
      let deviceHeight = ...; // Find API by yourself
      let _style = _.merge({}, style);
      if (style.header.height.substr(-1, 1) === '%') 
        _style.header.height = deviceHeight * (+style.header.height.slice(0, -1)) / 100;
    
      return _style;
    }
    Ответ написан
    Комментировать
  • Как добавить данные в массив через foreach в react?

    1. push мутирует массив. Читаем это и никогда не мутируем state. На ES6 добавить элемент в массив можно так:

    this.setState({ massiv: [ ...this.state.massiv, "новый элемент"  ] })


    2. Данные компоненты должны получать только через props. Конечно, некоторые из компонентов у вас будут как controller-view (подключены к store и будут получать данные через события\конекст\еще как-нибудь), но таких контроллеров должно быть мало, реально мало - в основном на верхних уровнях дерева.

    3. По поводу ajaxa - выносите такую логику в бизнес-слой. В ваши action creators, например. Тогда у вас не возникнет таких проблем: делаете запрос -> когда он завершится отправляете соответствующий action (success, failure) -> store обрабатывает экшен, изменяет свое состояние -> controller view получает новые данные и рендерится

    4. В ES6 есть промисы
    const someArr = [];
    const doAjaxJob = el => fetch('some-url', .... );
    const p = Promise.all(someArr.map(doAjaxJob)); // <-- сюда можно подписаться


    PS И главное - не превращайте хороший функциональный стиль в спагетти
    Ответ написан
    Комментировать