Задать вопрос
  • Почему не обновляется компонента при изменении props React?

    @dimoff66
    Кратко о себе: Я есть
    Потому что вы меняете count, но сам элемент заказа не спредите, ссылка остается той же и реакт думает что ничего не изменилось

    Вместо
    order[index].count = blablabla

    напишите
    order[index] = {...order[index], count: blablabla }
    Ответ написан
    1 комментарий
  • Как проверить redux через jest?

    @dimoff66
    Кратко о себе: Я есть
    const store = Redux.createStore(yourReducer)
    store.dispatch(AuthMethod(login, password))
    const value = store.getState().someKey // вместо someKey нужный вам ключ


    И дальше сравниваете value с ожидаемым значением
    Ответ написан
  • Как корректно учитывать тайминг разработчика?

    @dimoff66
    Кратко о себе: Я есть
    Какая вообще разница заказчику сколько программист сидел. Это нелогично. Наоборот, чем быстрее программист сделает работу, тем больше должен заплатить заказчик. за скорость.

    Я как-то устраивался на работу и вместо испытательного срока мне предложили договор на сдельную работу на полтора месяца. Тиммлид сказал: сделаешь за 3 дня - получишь всю сумму, без проблем. Сделал я конечно не за три дня, но уложился в три недели. Не рад был никто. Тимлид боялся, что его обвинят в том, что он поставил слишком завышенные сроки, и был прав: у всех на лицах был испуг и вопрос: "Как так получилось?". Еле сговорились на премию в 50 тр.
    Ответ написан
    1 комментарий
  • Таблица products. В ней есть 3 поля по которым нужно выдавать конкретную строку. По GET запросу?

    @dimoff66
    Кратко о себе: Я есть
    Такая строчка работать не может, strpos возвращает число
    $sku == strpos($sku, 'https')

    Я бы переписал так

    $sku = isset($_GET['sku']) ? str_replace(" ", "", $_GET['sku']) : null;
    
    if (is_numeric($sku)) { // если начало с цифры
        $filter = ['idProduct', $sku, true];  
    } elseif (substr($sku, 0, 5) == 'https') { // если начало с https
        $beforeBlockMain = strstr($sku, '?block_main', true) || $sku;
        $filter = ['linkProduct', $sku . ($sku_new ? '/' : ''), false];
    } elseif ($sku) {
        $filter = ['name', "%" . $sku . "%", true];
    }
    
    if ($filter) {
        $attrName = $filter[0];
        $value = $filter[1];
        $operator = $value[0] == "%" ? " LIKE " : " = ";
        $limit = $filter[2];
    
        $sql = "SELECT * FROM products WHERE " . $attrName . $operator . $value . ($limit ? " LIMIT 0,1" : "");
    }
    Ответ написан
  • PHP или Javascript?

    @dimoff66
    Кратко о себе: Я есть
    По моему PHP делал психически больной человек. Только этим можно объяснить необходимость зачем-то ставить $ перед именами переменных и полное отсутствие собственных методов у массивов, что делает невозможным человеческий чейнинг, столь удобный при работе с оными. Javascript же вполне себе приятный и современный язык.

    Другое дело что для PHP есть нормальные фреймворки с ORM, а в node js все из разряда сделай сам.
    Ответ написан
  • Как сделать перебор NodeList?

    @dimoff66
    Кратко о себе: Я есть
    Потому что возвращается коллекция, из которой динамически удаляются данные когда элемент больше не соответствует выставленному отбору. Зафиксируйте значения в массиве, тогда будет работать.

    var str = Array.from(document.getElementsByClassName('test'))
    Ответ написан
    1 комментарий
  • Скорость проверки наличия значения в массиве. Что быстрее?

    @dimoff66
    Кратко о себе: Я есть
    Без разницы, главное чтобы значения были в массиве сортированы, а в базе индексированы. Тогда и там и там поиск будет происходить моментально. В массиве он естественно должен быть бинарным.
    Ответ написан
  • Как вычесть массивы в функциональном стиле?

    @dimoff66
    Кратко о себе: Я есть
    function getIntervals (arr) {
       const mlsInterval = 30 * 60 * 1000
    
       const openHours = arr.filter(v => v.type === 'open').flatMap(v => {
          const [d1, d2] = [new Date(v.from).getTime(), new Date(v.to).getTime()]
          const length = Math.floor(( d2 - d1 ) / mlsInterval)
          const hours = Array.from({ length }, (z, ind) => new Date(d1 + ind * mlsInterval))
          return hours
       })
    
       const closeIntervals = arr.filter(v => v.type === 'closed').map(v => 
         [new Date(v.from).getTime(), new Date(v.to).getTime()]       
       )
    
       const result = openHours.filter(v =>  
         !closeIntervals.some(([start, stop]) => start <= v && stop > v)
       ).map(v => new Date(v).toString().match(/\d\d:\d\d:\d\d/g)[0])
    
       return result
    }
    Ответ написан
  • Как вывести N экземпляров компонента?

    @dimoff66
    Кратко о себе: Я есть
    Самый короткий синтаксис такой

    const length= 5; // передается в props
    Array.from({ length }, (_, index) => <MyComponent key={`_${index}`} /> );


    но вообще достаточно создать один раз функцию в каком-нибудь utils и использовать ее или использовать range из библиотеки lodash
    Ответ написан
    Комментировать
  • React: почему импортированная переменная в хуке useCallback не определена?

    @dimoff66
    Кратко о себе: Я есть
    это просто импорт, в чем смысл его перезаписывать, он содержит в себе значение из файла. Создайте другую переменную, инициируйте ее значением myModule и перезаписывайте ее сколько влезет.

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

    @dimoff66
    Кратко о себе: Я есть
    Array.from(document.querySelectorAll('input')).every(v => v.value)
    Ответ написан
    1 комментарий
  • В каких случаях синхронная/асинхронная обработка запросов предпочтительней?

    @dimoff66
    Кратко о себе: Я есть
    Полагаю для высоконагруженных асинхронная обработка лучше, она позволит распараллелить запросы, тем самым уменьшив время отклика. Если у приложения два с половиной пользователя, то и синхронная сойдет.
    Ответ написан
    Комментировать
  • Как исправить ошибку в коде?

    @dimoff66
    Кратко о себе: Я есть
    Сложно разбираться в вашем коде, но очевидно, что при занесении в базу числа вы прибавляете к строковой величине, равной строке "0". Поэтому надо проверить:
    1) Место присвоения
    2) Тип поля в базе.
    3) Если с первым и вторым пунктами все окей, значит проверьте визуализацию, которая показывает вам числа в таком виде.
    Ответ написан
    Комментировать
  • Как изменять стили с помощи js только при определенной ширине экрана?

    @dimoff66
    Кратко о себе: Я есть
    Ответ написан
    Комментировать
  • Как взять из массива предыдущее или следующее значение?

    @dimoff66
    Кратко о себе: Я есть
    Несколько вариантов

    1) Находим индекс через метод indexOf и получаем значение по индекс + 1 или индекс - 1
    const nextAfter = (arr, value) => {
      const ind = arr.indexOf(value) 
      if (ind < 0) return 
      return arr[ind + 1] // для предыдущего -1
    }


    2) Через функцию find

    arr.find((v, ind, arr) => arr[ind - 1] === value) 
    // для предыдущего +1, не путать с первым примером
    Ответ написан
    Комментировать
  • Map это объект или массив?

    @dimoff66
    Кратко о себе: Я есть
    Map это объект, объект не может ничего возвращать, возвращать могут его методы. Другое дело что в отличие от объекта, создаваемого как {}, объект Map итерируемый. Итерация по нему происходит по парам ключ-значение.
    Ответ написан
    Комментировать
  • Как вызвать функцию React компонента из вне?

    @dimoff66
    Кратко о себе: Я есть
    1) Как работает updateDataset ? Что она меняет, если она не меняет состояние? Она вызывает свойства chartInstance, но я не вижу, где этот объект у вас используется?

    2) Логика React такова что все сообщение от родителя к детям идет исключительно через props-ы, поэтому по хорошему если вы что-то хотите поменять в дочернем элементе, вы должны изменить state родителя так, чтобы в дочерний элемент передались нужные пропсы, которые обрабатывались бы в дочернем элементе. Например в родительском рисуете элемент так

    <Chart updateData={ [datasetIndex, newLabels, newData] }/>


    а в Chart обрабатываете

    if (props.updateData) updateDataset(...props.updateData)


    Такой подход будет соответствовать принципам реакт.

    3) Если все же хотите сделать по своему, то просто передайте в Chart функцию установки значения

    let updateDataHandler = {}
    return <Chart updateDataHandler={ h => { updateDataHandler = h } }/>


    а внутри Chart напишите
    props.updateDataHandler(updateDataset)

    теперь в родительском компоненте updateDataHandler будет ссылаться на функцию Chart И вы можете ее спокойно вызывать
    Ответ написан
  • Компонент React Select (Creatable). Как сделать так, чтобы при клике не открывался выпадающий список?

    @dimoff66
    Кратко о себе: Я есть
    Это не сложный вопрос, просто всегда в таких случаях лезьте на api страницу с описанием props-ов
    https://react-select.com/props#select-props

    Там вы найдете свойство openMenuOnClick, которое отвечает за упомянутое вами поведение.
    Ответ написан
    3 комментария
  • Ребята как можно устроиться frontend разработчиком будучи сеошником?

    @dimoff66
    Кратко о себе: Я есть
    Друзья, пожалуйста, запомните раз и навсегда: только идиотов интересует ваша биография. Но работать у идиотов при нынешней востребованности профессии программиста абсолютно незачем. Вопрос не в вашем опыте, не в вашем образовании, а в том, что вы реально умеете.

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

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

    Посему резюмирую: для нахождения работы вам нужны реальные навыки и какой-то проект для портфолио, который бы показал ваш уровень на текущий момент.

    Как вариант, можно потыкаться по вакансиям, содержащим тестовые задания и попробовать их поделать. Это очень быстрая прокачка. Вообще хождение по собеседованиям для джуна - это идеальная прокачка. Так что публикуйте резюме, придумайте себе опыт и ходите по собеседованиям(сейчас тем более ходить не надо, они через скайп чаще всего), там вы сразу поймете что от вас требуется.

    Еще совет: знание React или Vue сразу поднимает вашу цену как специалиста, ванильный js нет смысла учить, там два с половиной оператора, все придет с опытом, начните сразу React, Потому что одно другому не помешает, изучая реакт вы неминуемо прокачаетесь и в js.
    Ответ написан
    Комментировать
  • Как быть медлительному разработчику?

    @dimoff66
    Кратко о себе: Я есть
    Это же все относительно. Кто-то работает быстрее кто-то медленнее. Это ваш темп, если вы помимо решения задач еще и будете грузиться скоростью - на пользу не пойдет. Ну зафейлили значит зафейлили, кто сказал, что сроки были корректные.
    Ответ написан
    Комментировать