• Как настроить xcode signing?

    @undefined_title Автор вопроса
    Комментировать
  • Есть ли в React Native что-то типа Event Listener, Event Subscriber?

    @undefined_title
    тебе должна помочь redux middleware, где ты будешь проверять это для всех api екшинов, это конечно если используется redux, если нет то пишешь функцию которую используешь во всем проекте.
    Ответ написан
    Комментировать
  • Как не скачивать одни и те же данные с API, если не было изменений?

    @undefined_title
    Есть тип соединения web sockets, при котором сам сервер может тебе отправить данные когда они изменились, не знаю насколько подходящий это вариант в твоем случае, но из фронта узнать когда на сервере данные изменились не выйдет, только на сервере это ясно и он должен оповещать клиентскую часть об этом.
    Ответ написан
    Комментировать
  • Как подсчитать время между датами?

    @undefined_title
    Ответ написан
    Комментировать
  • Лексическое окружение, контекст вызова. Почему это разные понятия?

    @undefined_title
    Лексическое окружение - это все локальные переменные функции, Определяется во время создания функции, есть еще понятие скоуп - это переменные которые доступны из другой функции и они берутся из замыкания.
    Контекст вызова - это ссылка на объект из которого вызывается метод, это определяется во время вызова( кроме es6 arrow), то есть `a.b.c.call()` a.b.c будет контекстом вызова для метода call.
    Ответ написан
    Комментировать
  • В чём разница между Array и Array.prototype?

    @undefined_title
    Array - Функция конструктор которая нужна для создания массивов.
    Array.prototype - Объект прототип, с набором методов, нужен для реализации прототипного наследования, к тому же имеется исключительно у функций, по умолчанию там храниться поле constructor, которое хранит ссылку на класс который создал этот объект.
    При создании объекта через оператор new в том числе и массива, объекту присваивается .__proto__ = Array.prototype. __proto__, это и есть сам прототип, объект хранилище методов, в нем ищется поле когда не находиться у самого объекта.
    Ответ написан
    Комментировать
  • Простым языком о замыканиях?

    @undefined_title
    Это когда ты при объявлении функции имеешь доступ к переменным окружающей функции, именно и для этого доступа к переменным замыкание и используется
    Ответ написан
    Комментировать
  • Как правильно узнать ли надлежит один промежуток времени другому?

    @undefined_title Автор вопроса
    !(returnDateTime <= startDate || pickupDateTime >= endDate)
    Ответ написан
    Комментировать
  • Почему состояние должен быть иммутабельным?

    @undefined_title
    если reducer изменит состояние и вернет его, то подписчики(компоненты) не будут уведомлены про его изменение, так как redux будет думать что состояние не изменилось, потому что сравнение предыдущего и следующего состояния не глубокое, а сравнивается только ссылка, и вообще в ФП рекомендуют использовать чистые функции и работать со всем иммутабельно, это облегчает дебаг и упрощает тестирование.
    Ответ написан
    Комментировать
  • Что такое и зачем нужен новый тип данный Symbol в ES15?

    @undefined_title
    это надо для создания уникальных свойств, для избежания конфликта имен. Глобальный символ это тот который у тебя будет доступен с любого места программы, потому что символ объявленный переменной через var будет доступен только в текущей лексической области видимости, если ты объявил имя поля в объекте через символ, то достучаться к значению этого поля ты сможешь только через этот символ.

    Symbol - уникальный примитивный тип данных который был добавлен в ES6, каждый созданый символ никогда не будут равен друг другу, только если не сравнивается одна и та же ссылка символа, то есть поведение сравнения как и в объектов, но использовать объекты как уникальные поля мы не сможем, при объявлении имя поля как объект он будет переведет в примитив, потому что именами полей объекта могут быть только примитивы(строки), создать символ как объект через его конструктор не выйдет, для этого можно использовать конструктор Object, символ принимает строку, которая понадобится при дебаге. также символ это единствинный тип у которого нет литерала. символы позволяли бы создавать настоящие приватные свойства если бы не было метода Object.getOwnPropertySymbols который возвращает список всех символов объекта. Символы в основном используются не для создания приватных свойств, а для их уникальности, что бы имена не конфликтовали с именами сторонних разработчиков. Symbol.for('name') возвращает символ из глобального контекста, если такого нет создает и потом возвращает
    Ответ написан
    Комментировать
  • Два вопроса по props и PureComponent react?

    @undefined_title
    super - это функция(класс) от которой ты наследуешься, super(props) это функциональное наледование которое добавляет пропсы как поля в контекст функции то есть твоему новому объекту
    Ответ написан
    Комментировать
  • Как вызвать функцию которая находится внутри компоненты из другой компоненты в React?

    @undefined_title
    class Main extends Component {
     static myfunction(){
    alert('work');
    }
     render() {
      return (
        <div>
          <Child myFunction={()=>this.myfunction()} />
        </div>
      );
     }
    }
    
    class MyComponent extends Component {
     
     render() {
      Main.myfunction()
      return (
        <div><button onClick={() => this.props.myFunction()}>myFunction</button></div>
      );
     }
    }
    Ответ написан
    Комментировать
  • Почему ошибка React Native: Network request failed?

    @undefined_title
    обнови react-native или попробуй более старую версию андроида, ios, это может быть из за того что функция fetch в старой версии react-native работает некорректно в новых версиях прошивки
    Ответ написан
    Комментировать
  • С чего начать создание калькулятора?

    @undefined_title
    начни с интерфейса через который пользователь будет вводит цифры
    Ответ написан
    Комментировать
  • Как использовать React без роутера?

    @undefined_title
    просто юрл менятся не будет, а будет в одном компоненте много условий что именно надо рендерить
    Ответ написан
  • Как проверить есть ли в ассоциативном массиве определённое значение JavaScript?

    @undefined_title
    в js {} - это обычный объект, в этом языке объекты играют две роли, как переносчики данных и как обычный объект

    Object.values(obj).some(value => !value);
    вернет true если есть хоть одно пустое значение, null, undefined, "", false и тд.
    (Object.values(obj).filter(value => !value)).length

    вернет количество пустых значений
    Ответ написан
    Комментировать
  • Как изменить отрисованный элемент?

    @undefined_title
    при нажатии на кнопку добавить, у тебя должен происходить екшин который принесет данные книги к редьюсеру который вернет новый стейт стора, контейнер книг у тебя должен быть подписан на стор, и именно на массив books, при изменении которого будет перерендериваться компонент, и в рендере просто надо мапить this.props.books
    Ответ написан
    Комментировать
  • Как поставить условие?

    @undefined_title
    function toggleFullScreen() {
          if (!document.fullscreenElement &&    // alternative standard method
              !document.mozFullScreenElement && !document.webkitFullscreenElement) {  // current working methods
            if (document.documentElement.requestFullscreen) {
              document.documentElement.requestFullscreen();
            } else if (document.documentElement.mozRequestFullScreen) {
              document.documentElement.mozRequestFullScreen();
            } else if (document.documentElement.webkitRequestFullscreen) {
              document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
            }
            return true
          } else {
            if (document.cancelFullScreen) {
              document.cancelFullScreen();
            } else if (document.mozCancelFullScreen) {
              document.mozCancelFullScreen();
            } else if (document.webkitCancelFullScreen) {
              document.webkitCancelFullScreen();
            }
            return false
          }
        }
    
    toggleFullScreen() && document.body.style.display = ('none');


    или
    function toggleFullScreen() {
          if (!document.fullscreenElement &&    // alternative standard method
              !document.mozFullScreenElement && !document.webkitFullscreenElement) {  // current working methods
            if (document.documentElement.requestFullscreen) {
              document.documentElement.requestFullscreen() && return true;
            } else if (document.documentElement.mozRequestFullScreen) {
              document.documentElement.mozRequestFullScreen() && return true;
            } else if (document.documentElement.webkitRequestFullscreen) {
              document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) && return true;
            }
          } else {
            if (document.cancelFullScreen) {
              document.cancelFullScreen() && return false;
            } else if (document.mozCancelFullScreen) {
              document.mozCancelFullScreen() && return false;
            } else if (document.webkitCancelFullScreen) {
              document.webkitCancelFullScreen() && return false
            }
          }
        }
    
    toggleFullScreen() && document.body.style.display = ('none');
    Ответ написан
  • Как перебрать массив?

    @undefined_title
    //var initialData = [1, 9, 4, 95, -3, 51, 6, 9, 4, 4,-9, 88, 27];
    var initialData = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2];
    
    var wayFirst = function(data) { 
      var sum = 0;
      data.forEach( (value) => {sum = sum + value} )
      return sum;
    }
    
    var waySecond = function(data) {
      var sum = 0;
      data.forEach( (value, i) => {
        i % 2 === 0 ?  sum = sum + value : false
      })
      return sum;
    }
    
    var wayThird = function(data) {
      var sum = 0;
      var iTemp = 0
      data.forEach( (value, i) => { 
        if (!iTemp || iTemp + 4 === i)  { 
          sum = sum + value;
          iTemp === 0 ? iTemp = 1 : iTemp = i;
        } 
      })
      return sum;
    }
    
    console.log(wayFirst(initialData));
    console.log(waySecond(initialData))
    console.log(wayThird(initialData))


    сделал через forEach но через reduce было бы немного компактнее

    или если надо получать не значения а засумированные элементы с интервалом
    const initialData = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
    
    let sumArrayWithInterval = (data, interval) => { 
      const sumWithIntervel = []; 
      let next = 0;
      data.forEach((value, i) => {
        if (next === i) { 
          const valueIndex = interval === 1 ? 1 + i : interval + 1 + i;
          
          data[valueIndex] ? sumWithIntervel.push(value + data[valueIndex]) : false
          interval === 1 ? next = i + interval + 1 : next = valueIndex + 1
        }
      })
      return sumWithIntervel;
    }
    console.log(
          sumArrayWithInterval(initialData, 1)
    );
    
    console.log( 
        sumArrayWithInterval(
          sumArrayWithInterval(initialData, 1)
        , 2)
    );
    
    console.log( 
      sumArrayWithInterval(
        sumArrayWithInterval(
          sumArrayWithInterval(initialData, 1)
        , 2)
      , 4)
    );
    Ответ написан
    Комментировать