Задать вопрос
  • Как обновить create-react-app?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега React
    Во-первых, у вас в команде ошибка:
    npm install -g create-react-app


    Во-вторых, зачем вы снова ставите глобально, если вам написали:
    We no longer support global installation of Create React App
    Ответ написан
    Комментировать
  • Как записать данные в переменную после выполнения axios?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Опять кто-то не понял асинхронности.

    axios.get() возвращает Promise. Его метод .then() выполнится не сразу, а когда-то потом, когда будет получен результат запроса. Представьте, что интернет очччеенньь мееедленнныыыйй.

    Зато остальной код выполняется привычно сразу («синхронно»). В т.ч. и console.log() в последней строке – сразу же за созданием объекта. Но на тот момент веб-запрос ещё не выполнился.

    TL&DR надо ждать. Это можно делать несколькими способами: коллбэком, промисами, обёрткой вокруг них async/await.
    Например
    class Address {
      address = null;
      data = [];
     
      data() {
        return this.data;
      }
      
      constructor(address) {
        this.address = address;
      }    
    
      fetchInformation() {
        return axios.get(`${API_BASE}/getAddressInformation`, {
          params: {
            address: this.address
          }
        }).then(({ data }) => this.data = data);
      }
    }
    
    async function initialize() {
      const address = new Address(TEST_WALLET);
      await address.fetchInformation();
      console.log(address);
    }
    
    initialize();
    Ответ написан
    4 комментария
  • Как выдернуть массив чисел из строки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    (str.match(/[0-9]+/g) ?? []).map(Number)
    
    // или
    
    Array.from(str.matchAll(/\d+/g), n => +n)
    
    // или
    
    str.split(/\D+/).filter(Boolean).map(parseFloat)
    
    // или
    
    eval(`[${str.replace(/\D+/g, (m, i) => i ? ',' : '')}]`)
    
    // или
    
    [...str].reduce((acc, n, i, a) => (
      isNaN(n) || (isNaN(a[i - 1]) && acc.push(0), acc.push(acc.pop() * 10 + n * 1)),
      acc
    ), [])
    Ответ написан
    Комментировать
  • Как выдернуть массив чисел из строки?

    Lynn
    @Lynn
    nginx, js, css
    'Hello12someText6'.match(/\d+/g)
    // [ '12', '6' ]
    Ответ написан
    Комментировать
  • Как обмениваться переменными между React и JS?

    delphinpro
    @delphinpro
    frontend developer
    между React и JS

    Если вы не понимаете, что react и js это почти одно и то же (реакт по сути надмножество javascript), то у меня для вас очень плохие новости.


    Как бы перекинуть массив в React из JS, но так, чтобы и через JS я мог его изменить?


    Глобальный скоуп еще никто не отменил.

    window.MY_VAR = 123;

    в реакте

    console.log(window.MY_VAR); // 123
    Ответ написан
    1 комментарий
  • Как загрузить фото в Storage(firebase)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1 комментарий
  • Как правильно создать декоратор для функции?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Ответ написан
    Комментировать
  • Почему не работает innerHTML?

    Rst0
    @Rst0
    querySelectorAll в отличие от querySelector - это массив найденных элементов,
    соответственно
    element[0].innerHTMl="new text";
    Ответ написан
    2 комментария
  • Как поступить в ситуации, когда настройка rem`ов не подходит к каким-то элементам на сайте?

    neuotq
    @neuotq
    Прокрастинация
    Ответ немного не в тему, но подобная практика что вы приводите относительно плохая. Одно из ключевых удобств и причин использование rem — это уважение настроек браузера пользователя. Те мы насильно не переписываем их значения. Зная базовый стандартный размер шрифта в 16px, мы можем примерно понимать, как всё будет устроено. При этом если человек у себя изменил шрифт в настройках, то сайт будет выглядеть почти идеально.
    А в вашем случае, выходит костыльный путь, который даёт ощущение меньшего кода. Так не делают.
    Я уж молчу о том, что сами элементы почти всегда масштабируются не пропорционально на разных устройствах ключевых.
    Ну и подход нужно с mobile-first начинать, а потом, если нужно, корректировать, те условно будет
    //код общий и для мобилок
    .elem {
    //...
    }
    //код для устройств 768++
    @media (min-width: 768px) {
    // ... 
    }
    //код для устройств 768++
    @media (min-width: 768px) {
    // ... 
    }
    //код для устройств 1024++
    @media (min-width: 1024px) {
    // ... 
    }
    //и тп

    Тогда код остается контролируемым, гибким. простым и ясным. Понятно, что и где как себя ведёт.
    А с вашим подходом, будет слишком много крайних случаев, когда нужно будет делать исключения, писать доп правила нарушающие логику, просто чтобы заработало и тп.
    Теперь сам ответ на ваш вопрос, вам тогда нужно в каждое значение ваших media queries, помимо html, добавлять и элемент для которого будут свои, исключительные значения, ну условно
    @media(max-width: 991px){
        html{
            font-size: 10px;
        }
       .shapka-element {
            font-size: 12px;
        }
    }
    Ответ написан
    4 комментария
  • Как повторить такое в SCSS?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    $lg: 720px;
    
    @mixin _lg {
      @media (min-width: $lg) {
        @content;
      }
    }
    
    .tt {
    color: red;
    @include _lg {
          color: green;
        }
    }
    Ответ написан
    4 комментария
  • Почему после команды git rm выдаёт ошибку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git заподозрил что вы не совсем в здравом уме. Он не понимает, зачем вы написали эту команду после того как индексировали файл для будущего коммита, но ещё не зафиксировали его. И теперь гит просит уточнить, что именно вы хотите сделать. Либо вы передумали только коммитить его и хотите лишь удалить файл из индекса, либо собираетесь удалить файл совсем.
    Ответ написан
    3 комментария
  • Почему метод "хочет стать" функцией?

    Lynn
    @Lynn
    nginx, js, css
    Потому что точки с запятой нужно ставить.
    const greeting = {
    ...
    }; // <-- вот тут!!!
    
    (username) ? ...

    или убрать ненужные скобки
    const greeting = {
    ...
    }
    
    username ? ...
    Ответ написан
    1 комментарий
  • Как изолировать JavaScript код чтобы работало как в iframe но было не в iframe, а в div?

    Seasle
    @Seasle Куратор тега JavaScript
    1. IIFE
    2. ES6 модули
    3. Различные другие системы модулей: SystemJs, AMD
    Ответ написан
    2 комментария
  • Установка gitlab runner в docker?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Вы что-то путаете. Вебморда может быть у самого гитлаба, а не у раннера.

    Вместо сомнительных мануалов рекомендую пользоваться, всё-таки, официальной документацией.
    Ответ написан
    1 комментарий
  • Поменялся цвет шапки vs code! Как исправить?

    Rst0
    @Rst0
    https://code.visualstudio.com/api/references/theme...
    в глобальный settings.json можно добавить такую секцию и поменять цвет у всех(почти) элементов и подсветку кода
    "window.autoDetectHighContrast": false,
        "window.menuBarVisibility": "compact",
        "debug.console.fontSize": 10,
        "workbench.editor.enablePreview": false,
        "workbench.preferredHighContrastColorTheme": "Atom Material Theme",
        "workbench.preferredLightColorTheme": "Default Dark+",
        "workbench.colorCustomizations": {      <-----  theme color settings )
            "foreground": "#cccccc",
            "focusBorder": "#00807a",
            "selection.background": "#007974",
            "scrollbar.shadow": "#000000",
            "activityBar.foreground": "#e6e6e6",
            "activityBar.background": "#1c2323",
            "activityBar.inactiveForeground": "#ffffff66"
         },
    Ответ написан
    Комментировать
  • Как сделать круговое расположение букв в словах?

    Okujava-script
    @Okujava-script
    Веб-программист с абсолютным слухом и композитор
    <h1 id=h1></h1>
    <script>
    let radius = 70;
    let text = "corporate*service*";
    let step = Math.PI * 2 / text.length;
    for(i = 0; i < text.length; i ++){
    	let x = radius + radius * Math.sin(i * step);
    	let y = radius + radius * Math.cos(i * step);
    	let myspan = document.createElement("span");
    	myspan.innerText = text[i];
    	myspan.style.position = "absolute";
    	myspan.style.left = x + "px";
    	myspan.style.bottom = y + "px";
    	myspan.style.transform = "rotateZ(" + i * 360 / text.length + "deg)";
    	h1.appendChild(myspan);
    }
    </script>
    Ответ написан
    Комментировать
  • Как работать с foreign key sqlite3 через python, нигде понятного объяснения не нашёл?

    Vindicar
    @Vindicar
    RTFM!
    Питон тут нипричем. Читаем доки по sqlite, находим пример:
    CREATE TABLE artist(
      artistid    INTEGER PRIMARY KEY, 
      artistname  TEXT
    );
    CREATE TABLE track(
      trackid     INTEGER,
      trackname   TEXT, 
      trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
    );

    Пример обеспечивает каскадное обновление ключа (ты вроде это просишь).
    Также может потребоваться включить поддержку внешних ключей, выполнив первым делом запрос:
    PRAGMA foreign_keys = ON;
    Ответ написан
    Комментировать
  • Какие есть пути объединения Blockchain и AI?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В настоящее время таких путей нет. Так как нет мотивации майнеров к тому чтобы они тратили свои мегафлопы на задачи ИИ. Но если создать свою криптовалюту на основе POW и вместо перебора разрядной сетки SHA256 просто задавать мелкие задачки из области ИИ тогда мы получим полезный эффект.

    В чем здесь сложности я вижу. Сложно придумать алгоритм генерирующий такие задачки на ходу и подходящий под контракт функции POW. Ну... моей фантазии уже на это не хватает. Слишком много ограничений тут.
    Ответ написан
    Комментировать
  • Как он узнает, что (3, 5) - это arguments?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    arguments - это массив массиво-подобный объект аргументов, всегда присутствующий в функции (кроме стрелочных).
    Тут используется декоратор – функция-обёртка над другой функцией.
    Изначальная функция worker.slow()оборачивается в новую функцию-декоратор. Декоратор выполняет некую работу, вызывает оригинальную функцию, с ее результатом может выполнить еще какую-то работу, и возвращает итоговый результат.

    После выполнения этой строчки
    worker.slow = cachingDecorator(worker.slow, hash);
    в worker.slow у вас уже не оригинал, а декоратор. Т.е. эта функция
    function() {
        let key = hash(arguments); // (*)
        if (cache.has(key)) {
          return cache.get(key);
        }
    
        let result = func.call(this, ...arguments); // (**)
    
        cache.set(key, result);
        return result;
      };


    Именно она выполняется в последней строчке. Сюда передаются аргументы 3 и 5, которые и попадают в зарезервированный массив arguments.

    Можно переписать так, чтобы лучше понять, что происходит:

    function cachingDecorator(func, hash) {
      let cache = new Map();
      return function(arg1, arg2) { // явно указать аргументы
        let key = hash(arg1, arg2); // (*)
        if (cache.has(key)) {
          return cache.get(key);
        }
    
        let result = func.call(this, arg1, arg2); // (**)
    
        cache.set(key, result);
        return result;
      };
    }
    Ответ написан
  • Отмена axios запроса в redux thunk?

    Natebash
    @Natebash Автор вопроса
    React, Vue, Angular, Navite JS, Python / Node JS
    black1277 Да, все верно, у меня немного другая реализация получилась, у нас старый пакет axios который пока не можем поднять по собственным соображениям, поэтому сделал с помощью CancelToken
    https://axios-http.com/docs/cancellation

    Санка которая запускается на событие download
    const CancelToken = axios.CancelToken;
    const source = CancelToken.source();
    
    export const uploadThunk = (uploadData) => {
      return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
        try {
          await axiosInst.post(
            `${upload_url}/${subjectId}/upload`,
            uploadData, {cancelToken: source.token}
          );
    
        } catch (e) {
          console.log("Failed upload", e);
        }
      };
    };


    Отменяем предыдущий запрос по клику кнопки на фронте
    export const cancelUploadThunk = () => {
      return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
        source.cancel("Operation canceled by the user.");
      };
    };
    Ответ написан
    Комментировать