Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (13)
  • Kak тестировать reactsj/reduxjs?

    @scalder27
    Для автоматизации нужен test-runner - karma, mocha, jest. Выбрать по вкусу и требованиям. Каждый из них умеет запускаться в консоли и перезапускать тесты на изменение файлов с кодом и тестами.

    Потом нужен тестовый фреймворк для описания тест кейсов и тестовых проверок. Вариантов опять же полно - jasmine chai, tape и многое другое. Karma умеет работать с совершенно любыми фреймворками, jest и mocha самодостаточны в плане синтаксиса (похож на синтаксис jasmine). Главное отличие karma.js в том что она запускает тесты в браузере, в хроме, в файрфоксе, в браузере без интерфейса (phantom.js), соответственно есть все браузерное окружение. Для jest и mocha нужны дополнительные библиотеки чтобы это эмулировать.

    Чтобы тестировать редьюсеры redux-а больше ничего не надо. Для тестирования react-компонентов будет крайне полезна библиотечка ensyme. А в деле тестирования всякой асинхронщины (таймеры, ajax) - отличным подспорьем может быть sinon.js. Вот вроде и все.

    Советую заглянуть по ссылке: Full-Stack Redux Tutorial.
    Офигенный туториал по созданию redux, reactjs приложения. С тестами.
    Ответ написан
    Комментировать
  • Почему-то не останавливается анимация, она зациклилась, как быть?

    @scalder27
    setInterval замени на setTimeout - полегчает немного

    Чтобы анимация не была зациклена нужно уметь ее останавливать. Если был запущен setInterval, то он будет вызывать переданную функцию через заданные промежутки времени пока страница не будет закрыта - вот и получается зацикленная бесконечная анимация. Если не подходит setTimeout, то, скорее всего, нужно несколько раз выполнить функцию анимации. Нужно условие по которому можно стопнуть setInterval.

    function repeatWithInterval(callback, interval, repeatCount) {
      repeatCount = repeatCount != null ? repeatCount : Infinity;
      var count = 0;
      var timer = setInterval(function() {
        callback();
        if(++count >= repeatCount) {
          clearInterval(timer);    
        }
      }, interval);
    }
    
    repeatWithInterval(function() { show_animate(2); }, 1100, 4);


    Конечно, условие для прерывания цикла может быть любым.
    Таким образом, ответ на вопрос "Почему-то не останавливается анимация, она зациклилась, как быть?" - нужно уметь прерывать анимацию, нужно контролировать количество вызовов функци show_animate.
    Ответ написан
    1 комментарий
  • Почему перестает работать popover из bootstrap?

    @scalder27
    Попапы сейчас на странице инициализируются один раз. И в момент инициализации на странице ровно два попапа (открываем инспектор в браузере, консоль и выполняем $('[data-toggle="popover"]').length ).

    Нужно подписаться на событие turn.js. Возможно подойдет событие turned (www.turnjs.com/docs/Event:_turned):

    $(function() {
        $('.flipbook').turn({
            width: 1000,
            height: 349,
            elevation: 50,
            gradients: true,
            autoCenter: true
        });
    
        $(".flipbook").on("turned", function() {
            var $popovers = $('[data-toggle="popover"]');
            $popovers.popover("destroy");
            $popovers.popover();
        });
    });
    Ответ написан
    2 комментария
  • Как правильно возвратить значение функции?

    @scalder27
    Согласен с Алексей Уколов, что можно сделать только асинхронно. Немного кода:
    function location() {    
        return new Promise(function(resolve, reject) {
            navigator.geolocation.getCurrentPosition(resolve, reject);
        });
    }
    
    location()
        .then(function(position) {
            console.log({
                lat: position.coords.latitude,
                lng: position.coords.longitude
            });
        })
        .catch(function(error) {
            console.log(error);
        });
    Ответ написан
    Комментировать