Задать вопрос
  • Какие способы правильно загрузить данные в react компонент?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Вообще использование в render конструкций типа:
    {this.state.data[0].title}
    очень плохой стиль. По возможности избегайте его.
    Чтобы компонент рендерился поле загрузки данных:
    render() {
      const { data } = this.state;
      const isAllDataReady = data && data.length > 0;
    
      return (
        <div>
           {!isAllDataReady && <Preloader />}
           {isAllDataReady && (
             <div>
               <h4>App component</h4>
               {data[0].title}
             </div>
           )}
        </div>
      );
    }
    Ответ написан
    4 комментария
  • Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

    Естественно, всё описанное справедливо для случая, когда руководитель - профессиональный менеджер. А то часто на месте руководителя сидит человек руководствующийся эмоциями и мутными соображениями вычитанными в сомнительной бизнес-литературе.

    Из этого вывод, стратегия проста - увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.
    Ответ написан
    4 комментария
  • Что такое side эффект?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Sideeffect - это что-то, что может повлиять на "чистоту" вашей функции. Редьюсер же - функция. Чистая функция, это значит такая, что если ей на вход подать одни и те же параметры, то результат будет всегда один и тот же.

    Пример: есть у вас в localStorage имя пользователя. И вы в коде пишите, что-нибудь такое:
    case SET_DISPLAY_NAME: {
      return {
        ...state,
        name: window.localStorage.getItem('name') ? window.localStorage.getItem('name') : action.payload,
      }
    }


    Следовательно, если вы подадите на вход функции, имя Вася, то оно вам вернет Васю только если "в sideeffect локал_сторадже" нет ничего. Здесь вы не можете быть уверены, что если подать Васю, вам всегда вернется Вася.

    По примеру с комментариями - не думаю что хороший пример. Айдишники генерировать будет бэкэнд ваш. Вы добавляете новый комментарий путем отправки его на сервер, с сервера приходит статус "ОК" и ваш комментарий уже с айдишником.

    Бывает, что айдишники нужно генерировать самому, тогда они отлично генерятся в acftionCreator'ax. Например, делаете вы систему уведомлений, и у каждого уведомления должен быть свой id (например, тут сервер вам не нужен, вы ничего туда не отправляете, просто визуальная часть). В таком случае, я бы не стал генерировать id через middleware, а просто делал бы это в "экшенах".

    Тем не менее, с генерацией айди все тоже самое, что и с localStorage. Вы не уверены, что подав на вход: имя, текст комментария и почту - получите ТОТ же результат, что и в прошлый раз с такими же входными параметрами (айдишники то разные будут!)
    Ответ написан
    3 комментария
  • Калькулятор не принимает числа с десятком, как исправить?

    solotony
    @solotony
    покоряю пик Балмера
    100,25 - не число

    что бы не было ошибок используйте

    replace(',' , '.' );
    parseInt
    parseFloat
    Ответ написан
    Комментировать
  • Почему не работает оператор сравнения === в JS?

    rockon404
    @rockon404
    Frontend Developer
    prompt возвращает string при нажатии Ok и null при нажатии Отмена:
    var x = prompt("введите число");
    console.log(typeof x); // string

    Можно переписать так если надо просто приводить к числу:
    var x = +prompt("введите число");
    console.log(typeof x); // number при условии, что строку можно привести к числу

    Строгое равенство при сравнении разных типов всегда возвращает false:
    '0' === 0 // false

    Если вам надо делать проверки на нажатие Отмена, ввод пустой строки или нечислового значения, приведение стоит делать после этих проверок:
    var input = prompt('Введите число: ');
    
    if (input === '') {
      alert('Пустая строка');
    } else if (input === null) {
      alert('Вы нажали "Отмена"');
    } else if (Number.isNaN(+input)) {
      alert('Вы ввели не число');
    } else if (+input === 0) {
      alert('Вы ввели 0');
    } else if (+input > 0) {
      alert('Вы ввели число больше 0');
    } else {
      alert('Вы ввели число меньше 0');
    }
    Ответ написан
    8 комментариев
  • Создать иматацию поиска на HTML+JS?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Есть бэкенд в проекте?
    Или вы знаете все названия и ссылки страниц, и они не будут пополняться?

    AJAX - технология, которая отправляет запросы на бэкенд. Если нет бэкенда - нет AJAX-а
    Ответ написан
    4 комментария
  • Как зарегистрироваться на upwork?

    yetanothercoder
    @yetanothercoder
    java(script) coder
    да, там с целью борьбы с армией индусов и прочих спаммеров действует ограничение по определенным скилам и опыту. Про что у вас в профиле написано?
    Ответ написан
    1 комментарий
  • Pure CSS \ JS или Фреймворки?

    dom1n1k
    @dom1n1k
    Чистый css знать нужно обязательно. Это видно по огромному количеству дебильных вопросов на Тостере в духе "а как это сделать на бутстрапе?" - и приложена картинка, к которой бутстрап ни в борщ, ни в красную армию. Фреймворки в css - вспомогательный второстепенный инструмент, который иногда помогает, если хорошо подобран под задачу. Но чаще - балласт.

    С JS немного сложнее. Там фреймворки более важны и нужны. Но... знать ваниль всё равно нужно. Без ванили это все равно учить иностранный язык готовыми фразами абсолютно без понимания грамматики - в шаблонных ситуациях поможет, но шаг в сторону - и ты мычишь.
    Ответ написан
    Комментировать
  • С чего начать учить React?

    toxicmt
    @toxicmt
    кофаундер Хекслета
    > Я не шарю в этих ваших пактеных менеджерах, сборщиках и тд.

    Тогда вам не с реакта надо начинать, а с изучения экосистемы nodejs. Кратки экскурс можно получить пройдя наш бесплатный курс https://ru.hexlet.io/courses/js-setup-environment
    Ответ написан
    3 комментария
  • Как писать код быстрее?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Автокомплит в IDE ? Опыт?
    Ответ написан
    5 комментариев
  • Почему props меняется сразу для всех, а не для каждого отдельно, react/redux?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    isLoading - состояние только компонента item ? Так храните его в item )
    Ответ написан
    5 комментариев
  • Что значит эта строка кода?

    rockon404
    @rockon404
    Frontend Developer
    Опционально добавляется регулярное выражение в query string запроса, доступное по ключу description2__regex.
    Если вопрос только по синтаксису, то испльзуются шаблонные строки.
    Ответ написан
    2 комментария
  • Как извлечь нужные данные из объектов JSON?

    Negezor
    @Negezor
    Senior Shaurma Developer
    let { attachment } = data.response[1];
    
    attachment = attachment[attachment.type];
    Ответ написан
    2 комментария
  • Есть ли хорошие YouTube каналы по Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    есть ли какие-то хорошие каналы на английском или русском, не важно, где производится разработка на джаве

    Единственное, что можно смотреть в видео-формате - это доклады с конференций. Этого добра на JUGRuVideo навалом.

    И расскажите, какие каналы вы поглядываете

    Никакие. Это слишком медленный источник информации.
    Ответ написан
    3 комментария
  • Как можно улучшить High Order Reducer?

    miraage
    @miraage
    Старый прогер
    На моей практике такие штуки только запутывают код. If you ask me, как говорится, я бы это расписал на несколько редьюсеров сам. Проще читать, проще поддерживать.
    Я считаю, что код надо писать для людей, а не для машины.
    Ответ написан
    3 комментария
  • Как сложить десятичные числа в js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В 6-й строке
    price = $('#cart_price_' + id).html()
    попробуйте заменить на
    price = parseFloat( $('#cart_price_' + id).text())

    Вычисление total:
    var tot = 0;
    $('.total').each(function (t, e) {
      tot += Math.round(parseFloat($(e).text()) * 100);
    });
    tot /= 100;
    Ответ написан
    2 комментария
  • Как правильно передать анимацию разработчику?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Вариант 1:
    У разработчика есть то же ПО, что и у вас. Он может открыть ваш проект и не по описанию и гифке все делать, а по вашим исходникам.

    Вариант 2:
    У разработчика нет возможности открыть ваш проект. Такое вполне может случиться. Например ваш Principle не очень дружит с линуксом. Или еще что-то не так. В такой ситуации желательно иметь:
    • Гифку
    • Гифку x0.1, а то иногда все так быстро движется, что ничего не понятно
    • Список функций, которые вы используете (кривые безье сложно угадывать на глазок, а easing - понятие ооочень растяжимое)
    • Тайминги, по крайней мере продолжительность основных движений в анимации (в небольших взаимодействиях с элементами разница в 50ms может "чувствоваться", но "увидеть" ее сложно)
    • Если есть хитрые соотношения размеров - было бы хорошо иметь описание логики, а то иногда не понятно, идет движение "на 100px" или "на треть высоты элемента"


    Если есть обратная связь с вами, как дизайнером (можно что-то уточнить в процессе), то этого вполне достаточно.

    результат работы фронтенда не устраивает

    Не забывайте о том, что у очень многих (как это ни странно) фронтендеров чувство вкуса отсутствует от слова совсем. Так что для них создание чего-то красивого и нестандартного - это почти пытка. Правда что в такой ситуации делать - не очень представляю.
    Ответ написан
    3 комментария
  • Куда ехать фрилансить, в какую страну?

    keydon2
    @keydon2
    ...
    Вот так мозги и уплывают. Скоро останусь в своей стране только я, депутаты и тысячи китайцев :(
    Ответ написан
    3 комментария
  • Как сделать цепную функцию самостоятельно на JS?

    @domoratskii
    Вам нужно каждый раз возвращать текущий объект. Это делается добавлением return this в конце каждого метода.

    var life = {
      day: 0,
      up() {
        this.day++;
        return this;
      },
      down() {
        this.day--;
        return this;
      },
    }
    
    life.up().up()
    console.log(life.day) //2
    Ответ написан
    5 комментариев
  • Что значит запись аргументов в функции вида function(num1[, ...[, numN]])?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    квадратные скобки в справках и примерах означают необязательные параметры.

    то есть
    function(num1[, ...[, numN]])
    говорит, что это может быть и
    function(1) и function(1,1,1,1,1)

    А например запись типа:
    function (x, y[, z])
    означает, что x,y - обязательные параметры, z необязательный. Поэтому можно вызвать и
    function (1,2) и function(1,2,3), но не function(1,2,3,4)
    Ответ написан
    Комментировать